微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将sigaction重置为默认值

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

void debugger_init() { struct sigaction act; memset(&act,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,NULL); sigaction(SIGBUS,NULL); sigaction(SIGFPE,NULL); sigaction(SIGSEGV,NULL); sigaction(SIGSTKFLT,NULL); sigaction(SIGPIPE,NULL); }

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

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

检查备用信号堆栈(分配它的不同方法

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

你可以打电话

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

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

您也可以使用sigaction将sa_handler设置为SIG_DFL

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐