//捕捉段错误信号的信号处理程序
#include<stdio.h>
#include<signal.h>
#include<setjmp.h>
jmp_buf buf;
void handler(int s)
{
if (s == SIGBREAK)
printf (" now got a bus error signal\n");
if (s == SIGSEGV) printf(" now got a segmentation violation signal\n");
if (s == SIGILL) printf (" now got an illegal instruction signal\n");
//exit(1);
longjmp(buf,1);
}
int main(void)
{
signal(SIGBREAK,handler);
signal(SIGSEGV,handler);
signal(SIGILL,handler);
if(setjmp(buf))
{
printf("back in main\n");
return 0;
}
else printf("first time through");
loop:
//在这里循环,等待ctrl+c
goto loop;
return 0;
}
#include<stdio.h>
#include<signal.h>
#include<setjmp.h>
jmp_buf buf;
void handler(int s)
{
if (s == SIGBREAK)
printf (" now got a bus error signal\n");
if (s == SIGSEGV) printf(" now got a segmentation violation signal\n");
if (s == SIGILL) printf (" now got an illegal instruction signal\n");
//exit(1);
longjmp(buf,1);
}
int main(void)
{
signal(SIGBREAK,handler);
signal(SIGSEGV,handler);
signal(SIGILL,handler);
if(setjmp(buf))
{
printf("back in main\n");
return 0;
}
else printf("first time through");
loop:
//在这里循环,等待ctrl+c
goto loop;
return 0;
}