Comportamento do programa quando kill -HUP é recebido?

32

Existe uma maneira de descobrir o que o programa fará quando receber o sinal de morte HUP?
Sem simplesmente executar o comando ofc: D

Por exemplo,
killall -HUP pppdreiniciará o pppd
killall -HUP firefoxmatará o firefox

bbaja42
fonte

Respostas:

47

Leia a documentação. Essa é a única maneira. Como Keith já escreveu , o significado original de SIGHUP era que o usuário havia perdido o acesso ao programa e, portanto, os programas interativos deveriam morrer. Daemons - programas que não interagem diretamente com o usuário - não precisam desse comportamento e, em vez disso, frequentemente recarregam seus arquivos de configuração quando recebem o SIGHUP. Mas estas são apenas convenções.

Se você tem a fonte, também pode ler isso. Ou, se você possui apenas o binário, pode tentar desmontá-lo, procurar sigactionchamadas que configuram um manipulador de sinal SIGHUPe tentar descobrir o que esses manipuladores de sinal estão fazendo. Será mais fácil organizar para não enviar SIGHUP para esse programa em primeiro lugar.

A qualquer momento, um determinado processo está em um dos três estados em relação a um sinal específico: ignorá-lo, executar a ação padrão ou executar um manipulador personalizado. Muitos departamentos permitem que você veja a máscara de sinal de um processo com ps, por exemplo, ps sno Linux. Isso pode lhe dizer se o processo está ignorando o sinal ou vai morrer instantaneamente no SIGHUP, mas se o processo configurou um manipulador, você não pode dizer o que o manipulador faz.

Gilles 'SO- parar de ser mau'
fonte
1
SIGHUP remonta aos dias dos modems dial-up. Ele sinalizou um desligamento da conexão do modem. Ele ainda se aplica a uma queda de conexão, mas estes dias a sua raramente um hang-up que faz com que a conexão seja dropped.P
BillThor
@ bill True, mas uma sessão SSH também SIGHUP é processo filho se perder sua conexão com o cliente.
Keith
@ Keith: É por isso que indiquei que se aplica a conexões interrompidas e que raramente é mais causado por interrupções. Seria confuso neste momento alterar seu nome para algo relacionado a desconexões, como o SIGDCN.
BillThor
18

A ação padrão é finalizar o processo no SIGHUP. Veja man 7 signalpara mais detalhes. Mas os programas podem capturá-lo e fazer o que quiserem. Como os processos daemon nunca devem sair, eles geralmente usam o SIGHUP para outros fins, como reinicializar a si mesmos (como o pppd). O Firefox mantém a ação padrão.

Keith
fonte