Bruno Pacheco 0 Denunciar post Postado Maio 25, 2010 Eu compilei tudo conforme abaixo num terminal linux e o programa em c só finalizou la no terminal quando eu dei kill -kill. A minha dúvida é:-> porque o programa só resolve parar quando eu dou o comando kill -kill? -> como é o funcionamento desse programa? Compile o programa improc.c (abaixo) usando o comando "gcc improc.c -o improc". Execute uma sessão de terminal o comando improc, tente matá-lo (usando crtl-c) ou colocá-lo em suspenso (usando(crtl-z). Tente enviar outros sinais (usando kill) em outra sessão de terminal e veja que ocorre. Por fim, execute "kill -kill" para matar o processo. #include <signal.h> #include <unistd.h> #include <stdio.h> void foo (int sinal){ printf ("\n***** Sou imortal e me recuso a morrer!!! *****"); printf ("\n***** Jogando o sinal %2i no lixo!! *****\n", sinal); } int main (){ char c; int s; for (s=1; s<35; s++){ signal (s, foo); } while (1) { printf ("====> Hahahaha.. estou vivo e tenho PID %i\n", getpid ()); sleep (3); } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Maio 28, 2010 Este programa captura o sinal enviado ao processo e desvia o comportamento do sinal, para a função foo, que exibe a tal mensagem, porem, o sinal 9 (KILL) é um sinal que não pode ser capturado, por isto ele termina o processo. Outro exemplo de sinal que não pode ser capturado é o STOP. Para mais informações, veja o manual on-line do comando kill ($ man kill). Compartilhar este post Link para o post Compartilhar em outros sites