web-dev-qa-db-fra.com

Comportement de programme lorsque Kill -HUP est reçu?

Y a-t-il un moyen de savoir ce que le programme sera-t-il lorsqu'il reçoit la tuerie HUP?
Sans simplement exécuter la commande de la: D

Par exemple,
[.____] killall -HUP pppd va redémarrer la PPPD
[.____] killall -HUP firefox va juste tuer Firefox

32
bbaja42

Lire sa documentation. C'est le seul moyen. Comme - Keith déjà écrit , la signification originale de SIGHUP était que l'utilisateur avait perdu l'accès au programme, et donc les programmes interactifs devraient mourir. Daemons - Les programmes qui n'interagissent pas directement avec l'utilisateur - n'ont pas besoin de ce comportement et rechargez souvent souvent leurs fichiers de configuration lorsqu'ils reçoivent Sighup. Mais ce ne sont que des conventions.

Si vous avez la source, vous pouvez également lire cela aussi. Ou si vous n'avez que le binaire, vous pouvez essayer de le désassembler, rechercher sigaction appels configurant un gestionnaire de signal pour SIGHUP et essayez de déterminer ce que font ces gestionnaires de signaux. Il sera plus facile d'organiser de ne pas envoyer à Sighup à ce programme en premier lieu.

À tout moment, un processus donné est dans l'un des trois états par rapport à un signal particulier: l'ignorant, effectuant l'action par défaut ou exécuter un gestionnaire personnalisé. De nombreux unités vous permettent de voir le masque de signal d'un processus avec ps, par exemple. avec ps s sur Linux. Cela peut vous dire si le processus ignore le signal ou mourra instantanément sur Sighup, mais si le processus a défini un gestionnaire, vous ne pouvez pas dire ce que fait le gestionnaire.

L'action par défaut consiste à résilier le processus sur Sighup. Voir man 7 signal pour plus de détails. Mais les programmes peuvent le piéger et faire ce qu'ils veulent. Étant donné que les processus Daemon ne sont jamais censés sortir, ils utilisent généralement Sighup à d'autres fins, telles que la réinitialisation de elles-mêmes (en tant que PPPD). Firefox conserve l'action par défaut.

19
Keith