Dans ce cas, le plus simple est d'adopter la stratégie suivante:
Pour chaque application à surveiller, tu crées un wrapper qui se charge de démarrer l'application et joue le rôle de senseur en écrivant les évènements liés à l'application qu'il observe dans un journal ou un pipe nommé, et en lisant ses ordres dans un pipe nommé si tu as besoin de ce genre de fonctions.
Tu crées une application shell surveillant effectivement tout tes wrapper, lisant leurs rapports et leur envoyant des ordres.
N'oublie pas que les I/O sur les pipes nommés sont blonquantes si une seule des extrémités du pipe est ouverte. Tu peux aussi utiliser les signaux USR1 et USR2 comme élément de communication entre les processus.
La solution exacte dépend de ton problème, si tu veux surveiller des applications lancées en dehors de ton framework, etc. Le plus simple est que tu lances ton programme de surveillance à l'initialisation du système, comme ça tu peux supposer dans tes wrappers que ton programme est en marche et définir un protocole simple pour la communication à base de pipes nommés entre les rappels et le surveillant.
Si cela ne suffit pas à ce que tu t'en sortes, il faut nous donner plus de détails sur ce que tu veux faire exactement pour qu'on puisse t'aider. (Qui lance l'appli, quelle appli, quels sont tes degrés de liberté et tes contraintes, etc.)
[^] # Re: trap sigchld_handler SIGCHLD
Posté par Michaël (site web personnel) . En réponse au message Être notifié de la fin d'un process. Évalué à 2.
Dans ce cas, le plus simple est d'adopter la stratégie suivante:
Pour chaque application à surveiller, tu crées un wrapper qui se charge de démarrer l'application et joue le rôle de senseur en écrivant les évènements liés à l'application qu'il observe dans un journal ou un pipe nommé, et en lisant ses ordres dans un pipe nommé si tu as besoin de ce genre de fonctions.
Tu crées une application shell surveillant effectivement tout tes wrapper, lisant leurs rapports et leur envoyant des ordres.
N'oublie pas que les I/O sur les pipes nommés sont blonquantes si une seule des extrémités du pipe est ouverte. Tu peux aussi utiliser les signaux USR1 et USR2 comme élément de communication entre les processus.
La solution exacte dépend de ton problème, si tu veux surveiller des applications lancées en dehors de ton framework, etc. Le plus simple est que tu lances ton programme de surveillance à l'initialisation du système, comme ça tu peux supposer dans tes wrappers que ton programme est en marche et définir un protocole simple pour la communication à base de pipes nommés entre les rappels et le surveillant.
Si cela ne suffit pas à ce que tu t'en sortes, il faut nous donner plus de détails sur ce que tu veux faire exactement pour qu'on puisse t'aider. (Qui lance l'appli, quelle appli, quels sont tes degrés de liberté et tes contraintes, etc.)