将sigaction重置为默认值

在Android中,仿生加载程序为statrtup上的每个进程设置一个默认的信号处理程序:

void debugger_init() { struct sigaction act; memset(&act, 0, sizeof(act)); act.sa_sigaction = debugger_signal_handler; act.sa_flags = SA_RESTART | SA_SIGINFO; sigemptyset(&act.sa_mask); sigaction(SIGILL, &act, NULL); sigaction(SIGABRT, &act, NULL); sigaction(SIGBUS, &act, NULL); sigaction(SIGFPE, &act, NULL); sigaction(SIGSEGV, &act, NULL); sigaction(SIGSTKFLT, &act, NULL); sigaction(SIGPIPE, &act, NULL); } 

我想将其设置回它的默认值,这意味着我想忽略这些信号,并且默认处理程序将发生(CORE DUMP)

我如何恢复执行的操作? 我想忽略所有这些,就好像上面的函数从未被调用过一样

读信号(7) , 信号(2)和信号(2) 。

你可以打电话

 signal(SIGILL, SIG_DFL); signal(SIGABRT, SIG_DFL); 

等等你的main (这是动态加载后进入)

您也可以使用sigactionsa_handler设置为SIG_DFL

当然,如果你想在你的main之前默认处理这些信号,比如在一些静态的构造函数中,情况会更加棘手。