Tratamento de sinais. Leia os manuais de seu compilador para determinar que sinais são aceitos pela biblioteca de tratamento de sinais (
desses sinais chamando a função abort para gerar um sinal do tipo SIGABRT e pela digitação de
Passo 1
Para poder operar com sinais, teremos que incluir a biblioteca signal.h e criar um manipulador de sinais, que registraremos na função main.
Cabeçalho do programa:
#include stdio.h>
#include stdlib.h>
#include sinal.h>
void signalHandler(int signValue);
Passo 2
Para começar, vamos definir o manipulador de sinal.
Uma vez que um sinal é capturado, solicite ao usuário a seguinte mensagem:
void signalHandler(int signalValue)
{
int response;
printf("%s%d%s\n%s",
"\nInterrupt signal ( ",
signalValue,
" ) received.",
"Do you wish to continue ( 1 = yes or 2 = no )? ");
scanf("%d", &response);
while (response != 1 && response != 2)
{
printf("( 1 = yes or 2 = no)? ");
scanf("%d", &response);
}
...
}
Se o usuário quiser continuar, registre novamente o manipulador de sinal para o próximo SIGINT da seguinte forma:
void signalHandler(int signalValue)
{
...
if (response == 1)
{
signal(SIGINT, signalHandler);
}
...
}
Passo 3
Caso contrário, saia do programa:
void signalHandler(int signalValue)
{
...
else
{
exit(EXIT_SUCCESS);
}
}
Na função main, vamos registrar o manipulador de sinais e fazer com que dois sinais os demonstrem:
int main()
{
signal(SIGINT, signalHandler);
abort();
raise(SIGINT);
return 0;
}
Resposta
Ver o desenvolvimento meu bacano apressado