Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Pacheco

Programa em c que não está finalizando

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.