Tratamento de sinais. Leia os manuais de seu compilador para determinar que sinais são aceitos pela biblioteca de tratamento de sinais (). Escreva um programa com tratadores de sinal para os sinais SIGABRT e SIGINT. O programa deve testar a interceptação

desses sinais chamando a função abort para gerar um sinal do tipo SIGABRT e pela digitação de c para gerar um sinal do tipo SIGINT.

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