我是这种编程的新手,如果我的问题很琐碎,我很抱歉。我想要做的是在我的程序中导致分段错误,而不是退出程序,我想处理信号并在分段错误后继续执行。我写了一个似乎可以工作的代码,我只是想确保这是执行此操作的方法。所以这是我的代码。
void myhandle(int mysignal, siginfo_t *si, void* arg)
{
printf("Signal is %d\n",mysignal);
ucontext_t *context = (ucontext_t *)arg;
context->uc_mcontext.gregs[REG_RIP]++;
}
int main(int argc, char *argv[])
{
struct sigaction action;
action.sa_handler=myhandle;
sigaction(11,&action,NULL);
printf("Before segfault\n");
int *a=NULL;
int b=*a;
printf("I am still alive\n");
return 0;
}
有人可以向我解释为什么 myhandle 中的 printf 会运行两次吗?这段代码也可以吗?
谢谢你。