Bonjour,
Tout d'abord pardon si je ne suis pas dans le bon groupe mais je
penses que oui. Mais merci de me suggérer de poster ce message dans
d'autre groupe si vous avez une idée.
Voila je vais démarré un projet sous linux écrit en C.
Brièvement : 1 processus qui tourne en permanence. Je l'appelle GOD
;-)
Ce processus lance un programme : (fork() puis exec())
Ce programme/processus doit pouvoir envoyé et recevoir des info
depuis le processus GOD. De plus pour ne pas prendre 100% du cpu j'ai
besoins d'avoir des fonctionnalités de " Read bloquant "
Pour info : Je fait cela car GOD après sont lancement initialise une
carte hardware avec un API qui ne permet pas de gérer le "
multiprocess " : donc 1 seul processus peut avoir accès a cette carte
dans la machine.
Et moi jusqu'à 60 programmes différents doivent y accéder
simultanément : donc communication entre les 60 programmes et le
fameux GOD pour demander a GOD de faire " ceci ou cela " sur la carte.
Le paramètre a avoir : entre 1 et 240 processus peuvent communiquer
avec GOD.
Voilà maintenant a quoi j'ai penser durant toutes mes dernières nuit
blanches.
1) chaque programme possède une mémoire partagée. C'est assez facile a
mette en place puisque tous les processus sont créer par GOD, puis God
ou sont fils Ecrive dans différent champs de cette mémoire partagée.
La synchronisation étant faite par des sémaphores (pour avoir un Read
bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket
serveur et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer.
4) Les queues ou files de messages (msgget etc etc)
La aussi j'en suis encore a me documenter mais ma foie cela parait
peut être le plus simple non ??
Y a un spécialiste dans la sale ??
LE PLUS IMPORTANT : LES PRIORITES DES CHOIX
1) Fiable a 100%, je ne peux pas me permettre la moindre perte de
messages
sinon le père ou le fils vont rester endormis a jamais.
2) La communication la plus rapide possible
3) Le système le moins gourmand en ressource machine. (poor litle
CPU.)
Toutes remarques ou suggestion seront les bienvenue
Gilles
Bonjour,
Tout d'abord pardon si je ne suis pas dans le bon groupe mais je
penses que oui. Mais merci de me suggérer de poster ce message dans
d'autre groupe si vous avez une idée.
Voila je vais démarré un projet sous linux écrit en C.
Brièvement : 1 processus qui tourne en permanence. Je l'appelle GOD
;-)
Ce processus lance un programme : (fork() puis exec())
Ce programme/processus doit pouvoir envoyé et recevoir des info
depuis le processus GOD. De plus pour ne pas prendre 100% du cpu j'ai
besoins d'avoir des fonctionnalités de " Read bloquant "
Pour info : Je fait cela car GOD après sont lancement initialise une
carte hardware avec un API qui ne permet pas de gérer le "
multiprocess " : donc 1 seul processus peut avoir accès a cette carte
dans la machine.
Et moi jusqu'à 60 programmes différents doivent y accéder
simultanément : donc communication entre les 60 programmes et le
fameux GOD pour demander a GOD de faire " ceci ou cela " sur la carte.
Le paramètre a avoir : entre 1 et 240 processus peuvent communiquer
avec GOD.
Voilà maintenant a quoi j'ai penser durant toutes mes dernières nuit
blanches.
1) chaque programme possède une mémoire partagée. C'est assez facile a
mette en place puisque tous les processus sont créer par GOD, puis God
ou sont fils Ecrive dans différent champs de cette mémoire partagée.
La synchronisation étant faite par des sémaphores (pour avoir un Read
bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket
serveur et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer.
4) Les queues ou files de messages (msgget etc etc)
La aussi j'en suis encore a me documenter mais ma foie cela parait
peut être le plus simple non ??
Y a un spécialiste dans la sale ??
LE PLUS IMPORTANT : LES PRIORITES DES CHOIX
1) Fiable a 100%, je ne peux pas me permettre la moindre perte de
messages
sinon le père ou le fils vont rester endormis a jamais.
2) La communication la plus rapide possible
3) Le système le moins gourmand en ressource machine. (poor litle
CPU.)
Toutes remarques ou suggestion seront les bienvenue
Gilles
Projlinux@hotmail.com
Bonjour,
Tout d'abord pardon si je ne suis pas dans le bon groupe mais je
penses que oui. Mais merci de me suggérer de poster ce message dans
d'autre groupe si vous avez une idée.
Voila je vais démarré un projet sous linux écrit en C.
Brièvement : 1 processus qui tourne en permanence. Je l'appelle GOD
;-)
Ce processus lance un programme : (fork() puis exec())
Ce programme/processus doit pouvoir envoyé et recevoir des info
depuis le processus GOD. De plus pour ne pas prendre 100% du cpu j'ai
besoins d'avoir des fonctionnalités de " Read bloquant "
Pour info : Je fait cela car GOD après sont lancement initialise une
carte hardware avec un API qui ne permet pas de gérer le "
multiprocess " : donc 1 seul processus peut avoir accès a cette carte
dans la machine.
Et moi jusqu'à 60 programmes différents doivent y accéder
simultanément : donc communication entre les 60 programmes et le
fameux GOD pour demander a GOD de faire " ceci ou cela " sur la carte.
Le paramètre a avoir : entre 1 et 240 processus peuvent communiquer
avec GOD.
Voilà maintenant a quoi j'ai penser durant toutes mes dernières nuit
blanches.
1) chaque programme possède une mémoire partagée. C'est assez facile a
mette en place puisque tous les processus sont créer par GOD, puis God
ou sont fils Ecrive dans différent champs de cette mémoire partagée.
La synchronisation étant faite par des sémaphores (pour avoir un Read
bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket
serveur et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer.
4) Les queues ou files de messages (msgget etc etc)
La aussi j'en suis encore a me documenter mais ma foie cela parait
peut être le plus simple non ??
Y a un spécialiste dans la sale ??
LE PLUS IMPORTANT : LES PRIORITES DES CHOIX
1) Fiable a 100%, je ne peux pas me permettre la moindre perte de
messages
sinon le père ou le fils vont rester endormis a jamais.
2) La communication la plus rapide possible
3) Le système le moins gourmand en ressource machine. (poor litle
CPU.)
Toutes remarques ou suggestion seront les bienvenue
Gilles
Ce processus lance un programme : (fork() puis exec())
1) chaque programme possède une mémoire partagée. C'est assez facile a
mette en place puisque tous les processus sont créer par GOD, puis God
ou sont fils Ecrive dans différent champs de cette mémoire partagée.
La synchronisation étant faite par des sémaphores (pour avoir un Read
bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket
serveur et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer
4) Les queues ou files de messages (msgget etc etc)
La aussi j'en suis encore a me documenter mais ma foie cela parait
peut être le plus simple non ??
Y a un spécialiste dans la sale ??
Ce processus lance un programme : (fork() puis exec())
1) chaque programme possède une mémoire partagée. C'est assez facile a
mette en place puisque tous les processus sont créer par GOD, puis God
ou sont fils Ecrive dans différent champs de cette mémoire partagée.
La synchronisation étant faite par des sémaphores (pour avoir un Read
bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket
serveur et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer
4) Les queues ou files de messages (msgget etc etc)
La aussi j'en suis encore a me documenter mais ma foie cela parait
peut être le plus simple non ??
Y a un spécialiste dans la sale ??
Ce processus lance un programme : (fork() puis exec())
1) chaque programme possède une mémoire partagée. C'est assez facile a
mette en place puisque tous les processus sont créer par GOD, puis God
ou sont fils Ecrive dans différent champs de cette mémoire partagée.
La synchronisation étant faite par des sémaphores (pour avoir un Read
bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket
serveur et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer
4) Les queues ou files de messages (msgget etc etc)
La aussi j'en suis encore a me documenter mais ma foie cela parait
peut être le plus simple non ??
Y a un spécialiste dans la sale ??
Voila je vais démarré un projet sous linux écrit en C.
Brièvement : 1 processus qui tourne en permanence. Je l'appelle GOD ;-)
Ce processus lance un programme : (fork() puis exec())
Ce programme/processus doit pouvoir envoyé et recevoir des info depuis
le processus GOD. De plus pour ne pas prendre 100% du cpu j'ai besoins
d'avoir des fonctionnalités de " Read bloquant "
Pour info : Je fait cela car GOD après sont lancement initialise une
carte hardware avec un API qui ne permet pas de gérer le " multiprocess
" : donc 1 seul processus peut avoir accès a cette carte dans la
machine. Et moi jusqu'à 60 programmes différents doivent y accéder
simultanément : donc communication entre les 60 programmes et le fameux
GOD pour demander a GOD de faire " ceci ou cela " sur la carte
Le paramètre a avoir : entre 1 et 240 processus peuvent communiquer
avec GOD.
Voilà maintenant a quoi j'ai penser durant toutes mes dernières nuit
blanches
1) chaque programme possède une mémoire partagée. C'est assez facile
a mette en place puisque tous les processus sont créer par GOD, puis
God ou sont fils Ecrive dans différent champs de cette mémoire
partagée. La synchronisation étant faite par des sémaphores (pour
avoir un Read bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket serveur
et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer
4) Les queues ou files de messages (msgget etc etc) La aussi j'en suis
encore a me documenter mais ma foie cela parait peut être le plus
simple non ??
Y a un spécialiste dans la sale ??
LE PLUS IMPORTANT : LES PRIORITES DES CHOIX
1) Fiable a 100%, je ne peux pas me permettre la moindre perte de
messages sinon le père ou le fils vont rester endormis a jamais
2) La communication la plus rapide possible
3) Le système le moins gourmand en ressource machine. (poor litle
CPU )
Oula...ca me rappelle vaguement des choses ce type de programmes...
Voila je vais démarré un projet sous linux écrit en C.
Brièvement : 1 processus qui tourne en permanence. Je l'appelle GOD ;-)
Ce processus lance un programme : (fork() puis exec())
Ce programme/processus doit pouvoir envoyé et recevoir des info depuis
le processus GOD. De plus pour ne pas prendre 100% du cpu j'ai besoins
d'avoir des fonctionnalités de " Read bloquant "
Pour info : Je fait cela car GOD après sont lancement initialise une
carte hardware avec un API qui ne permet pas de gérer le " multiprocess
" : donc 1 seul processus peut avoir accès a cette carte dans la
machine. Et moi jusqu'à 60 programmes différents doivent y accéder
simultanément : donc communication entre les 60 programmes et le fameux
GOD pour demander a GOD de faire " ceci ou cela " sur la carte
Le paramètre a avoir : entre 1 et 240 processus peuvent communiquer
avec GOD.
Voilà maintenant a quoi j'ai penser durant toutes mes dernières nuit
blanches
1) chaque programme possède une mémoire partagée. C'est assez facile
a mette en place puisque tous les processus sont créer par GOD, puis
God ou sont fils Ecrive dans différent champs de cette mémoire
partagée. La synchronisation étant faite par des sémaphores (pour
avoir un Read bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket serveur
et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer
4) Les queues ou files de messages (msgget etc etc) La aussi j'en suis
encore a me documenter mais ma foie cela parait peut être le plus
simple non ??
Y a un spécialiste dans la sale ??
LE PLUS IMPORTANT : LES PRIORITES DES CHOIX
1) Fiable a 100%, je ne peux pas me permettre la moindre perte de
messages sinon le père ou le fils vont rester endormis a jamais
2) La communication la plus rapide possible
3) Le système le moins gourmand en ressource machine. (poor litle
CPU )
Oula...ca me rappelle vaguement des choses ce type de programmes...
Voila je vais démarré un projet sous linux écrit en C.
Brièvement : 1 processus qui tourne en permanence. Je l'appelle GOD ;-)
Ce processus lance un programme : (fork() puis exec())
Ce programme/processus doit pouvoir envoyé et recevoir des info depuis
le processus GOD. De plus pour ne pas prendre 100% du cpu j'ai besoins
d'avoir des fonctionnalités de " Read bloquant "
Pour info : Je fait cela car GOD après sont lancement initialise une
carte hardware avec un API qui ne permet pas de gérer le " multiprocess
" : donc 1 seul processus peut avoir accès a cette carte dans la
machine. Et moi jusqu'à 60 programmes différents doivent y accéder
simultanément : donc communication entre les 60 programmes et le fameux
GOD pour demander a GOD de faire " ceci ou cela " sur la carte
Le paramètre a avoir : entre 1 et 240 processus peuvent communiquer
avec GOD.
Voilà maintenant a quoi j'ai penser durant toutes mes dernières nuit
blanches
1) chaque programme possède une mémoire partagée. C'est assez facile
a mette en place puisque tous les processus sont créer par GOD, puis
God ou sont fils Ecrive dans différent champs de cette mémoire
partagée. La synchronisation étant faite par des sémaphores (pour
avoir un Read bloquant)
Résultat au plus fort de la musique : 240 Segment de mémoire partagée
et 240 sémaphores.
2) Les pipes : pareil mais pas de mémoire partagée et toutes les infos
transite par des pipes.
Résultat au plus fort de la musique : 240 pipes aller et 240 pipes
retours hummmmmmm
Je doutes un peut mais n'y connaissant rien 480 pipes ?? de plus le
système me parait moins efficace
Que le sémaphore et la mémoire partagée au niveau de la programmation
que l'on peut en faire.
3) Les sockets ?
La j'en suis encore a me documenter mais apparemment 240 socket serveur
et 240 sockets clients ??
Bon là un spécialiste socket peut peut-être m'éclairer
4) Les queues ou files de messages (msgget etc etc) La aussi j'en suis
encore a me documenter mais ma foie cela parait peut être le plus
simple non ??
Y a un spécialiste dans la sale ??
LE PLUS IMPORTANT : LES PRIORITES DES CHOIX
1) Fiable a 100%, je ne peux pas me permettre la moindre perte de
messages sinon le père ou le fils vont rester endormis a jamais
2) La communication la plus rapide possible
3) Le système le moins gourmand en ressource machine. (poor litle
CPU )
Oula...ca me rappelle vaguement des choses ce type de programmes...
Pas terrible, tu vas faire des boucles actives pour savoir où piocher
l'information. Si tu veux éviter celà, il faut que tu utilise un pipe
pour avertir le maître qu'il a quelque chose à lire.
Le client est en sommeil (lecture bloquante ou autre )
Pas terrible, tu vas faire des boucles actives pour savoir où piocher
l'information. Si tu veux éviter celà, il faut que tu utilise un pipe
pour avertir le maître qu'il a quelque chose à lire.
Le client est en sommeil (lecture bloquante ou autre )
Pas terrible, tu vas faire des boucles actives pour savoir où piocher
l'information. Si tu veux éviter celà, il faut que tu utilise un pipe
pour avertir le maître qu'il a quelque chose à lire.
Le client est en sommeil (lecture bloquante ou autre )
Pas terrible, tu vas faire des boucles actives pour savoir où piocher
l'information. Si tu veux éviter celà, il faut que tu utilise un pipe
pour avertir le maître qu'il a quelque chose à lire.
Oui enfin je pensais sans se cas là synchroniser avec un sémaphore ??
La question subsidiaire de ce cas est : est-ce que un sémaphore
positionné par
un processus A peut être relâché par un processus B ????
et plus génériquement pour tous les systéme envisagé y a-t-il
possibilité par exemple pour un pipe
une queue de message, un socket : que le serveur lise un pipe ou un
socket et que tous les autre processus
écrive dans celui là ?
dans ce cas le serveur a un file d'attente d'ordre, que ce soient une
queue, un pipe ou un socket
et il les lis séquentiellement et les traites.
Le problème des commandes en rafale ne se pose pas car toutes
commandes doivent mettre le processus client
en sommeil jusqu'à la réalisation de cette commande.
Par contre pour les commandes elles peuvent avoir une taille
importante enfin entre 100 octets et 2Ko
Si je doutais de la fiabilité des pipes et des queues de messages
c'est parce que j'ai lu qu'il n'était pas possible de connaître leurs
limites :
Taille maxi des pipes ?
Nombre maxi d'éléments par pipes ?
Pareil pour les queues ?
Si tu sais comment interpréter j'ai trouvé cela en tapant sysctl -a
kernel.sem = 250 32000 32 128
kernel.msgmnb = 16384
kernel.msgmni = 16
kernel.msgmax = 8192
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 33554432
Ma problématique est autant le transfert de donnée vers le serveur que
la synchro.
Voilà comment je vois le fonctionnement.
Le serveur est en sommeil attente d'une nouvelle commande (lecture
bloquante ou autre )
Un client envoie une commandeLe client est en sommeil (lecture bloquante ou autre )
Le serveur effectue cette commande
Le serveur réveille le client pour qu'il il vient de travailler.
Le serveur est en sommeil attente d'une nouvelle commande (lecture
bloquante ou autre )
Pas terrible, tu vas faire des boucles actives pour savoir où piocher
l'information. Si tu veux éviter celà, il faut que tu utilise un pipe
pour avertir le maître qu'il a quelque chose à lire.
Oui enfin je pensais sans se cas là synchroniser avec un sémaphore ??
La question subsidiaire de ce cas est : est-ce que un sémaphore
positionné par
un processus A peut être relâché par un processus B ????
et plus génériquement pour tous les systéme envisagé y a-t-il
possibilité par exemple pour un pipe
une queue de message, un socket : que le serveur lise un pipe ou un
socket et que tous les autre processus
écrive dans celui là ?
dans ce cas le serveur a un file d'attente d'ordre, que ce soient une
queue, un pipe ou un socket
et il les lis séquentiellement et les traites.
Le problème des commandes en rafale ne se pose pas car toutes
commandes doivent mettre le processus client
en sommeil jusqu'à la réalisation de cette commande.
Par contre pour les commandes elles peuvent avoir une taille
importante enfin entre 100 octets et 2Ko
Si je doutais de la fiabilité des pipes et des queues de messages
c'est parce que j'ai lu qu'il n'était pas possible de connaître leurs
limites :
Taille maxi des pipes ?
Nombre maxi d'éléments par pipes ?
Pareil pour les queues ?
Si tu sais comment interpréter j'ai trouvé cela en tapant sysctl -a
kernel.sem = 250 32000 32 128
kernel.msgmnb = 16384
kernel.msgmni = 16
kernel.msgmax = 8192
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 33554432
Ma problématique est autant le transfert de donnée vers le serveur que
la synchro.
Voilà comment je vois le fonctionnement.
Le serveur est en sommeil attente d'une nouvelle commande (lecture
bloquante ou autre )
Un client envoie une commande
Le client est en sommeil (lecture bloquante ou autre )
Le serveur effectue cette commande
Le serveur réveille le client pour qu'il il vient de travailler.
Le serveur est en sommeil attente d'une nouvelle commande (lecture
bloquante ou autre )
Pas terrible, tu vas faire des boucles actives pour savoir où piocher
l'information. Si tu veux éviter celà, il faut que tu utilise un pipe
pour avertir le maître qu'il a quelque chose à lire.
Oui enfin je pensais sans se cas là synchroniser avec un sémaphore ??
La question subsidiaire de ce cas est : est-ce que un sémaphore
positionné par
un processus A peut être relâché par un processus B ????
et plus génériquement pour tous les systéme envisagé y a-t-il
possibilité par exemple pour un pipe
une queue de message, un socket : que le serveur lise un pipe ou un
socket et que tous les autre processus
écrive dans celui là ?
dans ce cas le serveur a un file d'attente d'ordre, que ce soient une
queue, un pipe ou un socket
et il les lis séquentiellement et les traites.
Le problème des commandes en rafale ne se pose pas car toutes
commandes doivent mettre le processus client
en sommeil jusqu'à la réalisation de cette commande.
Par contre pour les commandes elles peuvent avoir une taille
importante enfin entre 100 octets et 2Ko
Si je doutais de la fiabilité des pipes et des queues de messages
c'est parce que j'ai lu qu'il n'était pas possible de connaître leurs
limites :
Taille maxi des pipes ?
Nombre maxi d'éléments par pipes ?
Pareil pour les queues ?
Si tu sais comment interpréter j'ai trouvé cela en tapant sysctl -a
kernel.sem = 250 32000 32 128
kernel.msgmnb = 16384
kernel.msgmni = 16
kernel.msgmax = 8192
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 33554432
Ma problématique est autant le transfert de donnée vers le serveur que
la synchro.
Voilà comment je vois le fonctionnement.
Le serveur est en sommeil attente d'une nouvelle commande (lecture
bloquante ou autre )
Un client envoie une commandeLe client est en sommeil (lecture bloquante ou autre )
Le serveur effectue cette commande
Le serveur réveille le client pour qu'il il vient de travailler.
Le serveur est en sommeil attente d'une nouvelle commande (lecture
bloquante ou autre )
Comme tu fais des vfork/exec, avec des pipe ou des sockets, n'oublie
pas de fermer les descripteurs dont les escalves ne se servent pas. Le
plus simple est de mettre et retirer le flag close-on-exec (avec
fcntl). Place le descripteur à un endroit attendu par l'esclave (par
exemple stdin/stdout) avec dup2 comme ça il n'aura pas besoin de
courrir après.
Comme tu fais des vfork/exec, avec des pipe ou des sockets, n'oublie
pas de fermer les descripteurs dont les escalves ne se servent pas. Le
plus simple est de mettre et retirer le flag close-on-exec (avec
fcntl). Place le descripteur à un endroit attendu par l'esclave (par
exemple stdin/stdout) avec dup2 comme ça il n'aura pas besoin de
courrir après.
Comme tu fais des vfork/exec, avec des pipe ou des sockets, n'oublie
pas de fermer les descripteurs dont les escalves ne se servent pas. Le
plus simple est de mettre et retirer le flag close-on-exec (avec
fcntl). Place le descripteur à un endroit attendu par l'esclave (par
exemple stdin/stdout) avec dup2 comme ça il n'aura pas besoin de
courrir après.
Comme tu fais des vfork/exec, avec des pipe ou des sockets, n'oublie
pas de fermer les descripteurs dont les escalves ne se servent pas. Le
plus simple est de mettre et retirer le flag close-on-exec (avec
fcntl). Place le descripteur à un endroit attendu par l'esclave (par
exemple stdin/stdout) avec dup2 comme ça il n'aura pas besoin de
courrir après.
lorsque je fait un fork puis un exec dans mon prog
au moment de l'exec tout se ferme tout seul de toute facons ? non ?
un exec appelle bien un Exit non ??
bon donc si je résume le mieux dans mon cas est de prendre les queue
de messages ou les socket ???? mais ou puis-je trouver des
informations la taille et le nombre maximum ???
peut tu aussi m'eclairer sur le fait que tu parle de bidirectionel
pour les socket et pas pour les queue de message ????
Comme tu fais des vfork/exec, avec des pipe ou des sockets, n'oublie
pas de fermer les descripteurs dont les escalves ne se servent pas. Le
plus simple est de mettre et retirer le flag close-on-exec (avec
fcntl). Place le descripteur à un endroit attendu par l'esclave (par
exemple stdin/stdout) avec dup2 comme ça il n'aura pas besoin de
courrir après.
lorsque je fait un fork puis un exec dans mon prog
au moment de l'exec tout se ferme tout seul de toute facons ? non ?
un exec appelle bien un Exit non ??
bon donc si je résume le mieux dans mon cas est de prendre les queue
de messages ou les socket ???? mais ou puis-je trouver des
informations la taille et le nombre maximum ???
peut tu aussi m'eclairer sur le fait que tu parle de bidirectionel
pour les socket et pas pour les queue de message ????
Comme tu fais des vfork/exec, avec des pipe ou des sockets, n'oublie
pas de fermer les descripteurs dont les escalves ne se servent pas. Le
plus simple est de mettre et retirer le flag close-on-exec (avec
fcntl). Place le descripteur à un endroit attendu par l'esclave (par
exemple stdin/stdout) avec dup2 comme ça il n'aura pas besoin de
courrir après.
lorsque je fait un fork puis un exec dans mon prog
au moment de l'exec tout se ferme tout seul de toute facons ? non ?
un exec appelle bien un Exit non ??
bon donc si je résume le mieux dans mon cas est de prendre les queue
de messages ou les socket ???? mais ou puis-je trouver des
informations la taille et le nombre maximum ???
peut tu aussi m'eclairer sur le fait que tu parle de bidirectionel
pour les socket et pas pour les queue de message ????