Pour diverses raisons, l’application que nous avons consiste en 3 processus qui ne peuvent pas être transformés en un seul. Ces processus sont assez étroitement liés, il est donc logique de les reproduire et de les tuer ensemble. Par exemple, si l'un d'entre eux meurt, tout le système ne fonctionnera pas, il est donc logique de tuer les deux autres.
Cela peut-il être fait sous Linux?
(foo ; killall bar 2>/dev/null) &
?&
il y a une sous-coque d'une manière ou d'une autre, je pense. S'il y a une différence, c'est une subtile; Je n'ai pas enquêté.Je ne connais aucun moyen de le faire directement; c'est-à-dire que Linux gère automatiquement le nettoyage du processus. Je crois que vous aurez besoin d'un quatrième processus qui surveille le statut des trois autres et tue les deux autres quand on meurt.
Si c'est possible faire démarrer les trois processus par le même processus parent, c’est probablement la meilleure approche - laisser le processus parent faire un
wait()
, qui reviendra lorsque l'un des processus enfants se termine. Si ce n’est pas une option, écrire un nouveau programme spécifiquement pour faire la surveillance. Vous devrez lui indiquer les PID des trois processus. Il peut vérifier s’ils sont en vie en essayant périodiquement de leur envoyer le signal 0. (Le processus de surveillance devra fonctionner sous le même UID que les autres processus, ou en tant que root (UID 0), afin d’avoir la permission de leur envoyer des signaux).la source