1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
void handle_signal(int param)
{
char err[1000];
strcpy(err,"Critical system error : ");
if (param==SIGINT) strcat(err,"Interactive attention\n");
if (param==SIGILL) strcat(err,"Illegal instruction\n");
if (param==SIGFPE) strcat(err,"Floating point error\n");
if (param==SIGSEGV) strcat(err,"Segmentation violation\n");
if (param==SIGABRT) strcat(err,"Abnormal termination (abort)\n");
printf("%s\n",err);
}
//-------------------------------------------------------------------------
void func_test()
{
raise(SIGSEGV);
}
int main(int argc, char *argv[])
{
signal (SIGILL, handle_signal);
signal (SIGFPE, handle_signal);
signal (SIGSEGV,handle_signal);
// suite du code
func_test(); // declanchement d'un signal
// suite du code
return(0);
} |