Comportement du programme lorsque kill -HUP est reçu?

32

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 pppdredémarrera pppd
killall -HUP firefoxva juste tuer Firefox

bbaja42
la source

Réponses:

47

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 sigactionappels qui configurent un gestionnaire de signaux SIGHUPet 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 ssous 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.

Gilles, arrête de faire le mal
la source
1
SIGHUP remonte à l'époque des modems commutés. Il a signalé un raccrochage de la connexion modem. Cela s'applique toujours à une connexion
interrompue
@bill True, mais une session SSH SIGHUP sera également son processus enfant si elle perd sa connexion client.
Keith
@Keith: C'est pourquoi j'ai indiqué que cela s'applique aux connexions interrompues et n'est plus rarement causé par des blocages. Il serait confus à ce stade de changer son nom en quelque chose lié aux déconnexions, comme SIGDCN.
BillThor
18

L'action par défaut consiste à terminer le processus sur SIGHUP. Voir man 7 signalpour 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.

Keith
la source