Existe-t-il un moyen de savoir ce que le programme fera lorsqu'il recevra le signal d'arrêt HUP?
Sans exécuter simplement la commande ofc: D
Par exemple,
killall -HUP pppd
redémarrera pppd
killall -HUP firefox
va juste tuer Firefox
Lisez sa documentation. C'est le seul moyen. Comme Keith l'a 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. Les démons - des programmes qui n'interagissent pas directement avec l'utilisateur - n'ont pas besoin de ce comportement et rechargent 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 la lire. Ou si vous n'avez que le binaire, vous pouvez essayer de le désassembler, rechercher des sigaction
appels qui configurent un gestionnaire de signaux SIGHUP
et essayer de comprendre ce que font ces gestionnaires de signaux. Il sera plus facile de ne pas envoyer SIGHUP à ce programme en premier lieu.
À tout moment, un processus donné se trouve dans l'un des trois états par rapport à un signal particulier: l'ignorer, effectuer l'action par défaut ou exécuter un gestionnaire personnalisé. Beaucoup d'unités vous permettent de voir le masque de signal d'un processus avec ps
, par exemple avec ps s
sous 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 le gestionnaire fait.
L'action par défaut consiste à terminer 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 démon ne sont jamais censés se terminer, ils utilisent couramment SIGHUP à d'autres fins, comme pour se réinitialiser (comme le fait pppd). Firefox conserve l'action par défaut.la source