Sinais em Linux [Artigo] - página 4
[ Hits: 179.736 ]
Quando kill não é kill
Eu realmente não sei porque chamaram este comando e chamada de sistema de kill.
kill, de matar, na verdade é apenas "enviar um sinal". Só porque o sinal padrão dele é o 15 (SIGTERM) ele foi chamado de kill?
Antes de mais nada lembre-se que kill é para enviar um sinal, mesmo que seja o 9 ou 15.
Lembra do nosso código sinais1.c? Sem alterar ele vamos brincar com kill.
$ ./sinais1
Meu pid eh 10155
Valor de a = 0
Valor de a = 1
E lá fica ele eternamente imprimindo a variável a. Em outro terminal a gente brinca:
$ kill -20 10155
Veja que ocorre o mesmo do que um Control+Z. Ele ficou em STOP. Para voltar preciso no terminal do sinais1 executar um fg. Este é um dos poucos que tem graça mesmo se não for tratado. Todos os demais irão causar o encerramento do programa porque eu não tratei ele devidamente:
$ kill -10 10155
(sinal de usuário. Como não tratei, o meu processo encerra).
Enfim, kill é o comando para enviar um sinal, não para matar ele.
Em programação C eu tenho a chamada de sistema kill (man 2 kill). Ela tem dois parâmetros, o PID do processo e o número do sinal, como na versão de comando.