23,118
社区成员
发帖
与我相关
我的任务
分享
$ cat core.c
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int flag;
void f(int nr)
{
printf("sig nr=%d\n", nr);
if (flag & 0x02)
signal(SIGSEGV, SIG_DFL);
}
int main(int ac, char *av[])
{
flag = atoi(av[1] ?: "");
if (flag & 0x01)
signal(SIGSEGV, f);
*(int *)0 = 0;
return 2;
}
比较一下flag=0/1/3的区别。