Processus
haikei00X
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
Bonjour.
Je viens de commencer le travail sur une application de chat avec les sockets en c, et je bloque sur un truc. En effet, je voudrais savoir comment est ce qu'un processus parent ayant plusieurs processus fils pourrait il communiquer avec l'un de ses fils connaissant son pid.
Merci d'avance ^_^.
Je viens de commencer le travail sur une application de chat avec les sockets en c, et je bloque sur un truc. En effet, je voudrais savoir comment est ce qu'un processus parent ayant plusieurs processus fils pourrait il communiquer avec l'un de ses fils connaissant son pid.
Merci d'avance ^_^.
Mon soucis, c'est où est ce que l'ensemble des fils sont ils stockés. Autrement, où est-ce que le père doit aller chercher pour trouver le bon processus afin de lui communiquer les infos.
Merci d'avance ^_^.
Je vois bien un truc de ce style là :
- Création du pipe par le père
- Création du fils via fork()
- Création du lien : le père récupère le pid du fils et fait le lien avec le pipe précédemment créé en éditant une structure.
Ensuite reste plus qu'à parcourir ta structure pour trouver le pid et donc le pipe associé.
Je vois ce que vous voulez dire, sauf que le problème c'est que les processus fils existent déjà, et à un certain moment, le père est mené à communiquer avec l'un d'eux en recevant le pid du processus fils avec lequel il est censé communiquer. Et donc c'est là où il utilise le pipe pour la première fois, donc on ne saura faire le lien entre le processus fils et le pipe.
Je n'ai pas encore testé cela c'est juste une idée mais je ne sais pas si elle est bonne ou pas.
Le processus père envoie un signal au processus fils connaissant son pid, et puis on définit un handler qu'on va associer à un signal SIGUSR1 par exemple et voilà!!
Pour qu'un père puisse communiquer via un pipe avec un fils, il faut que le pipe soit créé avant le fork afin que les deux processus puisse y accéder.