linux – 分段错误处理程序中的分段错误
发布时间:2020-12-13 22:53:24 所属栏目:Linux 来源:网络整理
导读:在 Linux下的分段falut处理程序中是否存在一些针对分段错误的定义行为? 是否会再次调用同一个处理程序?如果是这样,在所有平台上,是否定义等等. 谢谢. 解决方法 答案取决于您安装信号处理程序的方式.如果使用不推荐的 signal() 调用安装了信号处理程序,那么
在
Linux下的分段falut处理程序中是否存在一些针对分段错误的定义行为?
是否会再次调用同一个处理程序?如果是这样,在所有平台上,是否定义等等. 谢谢. 解决方法
答案取决于您安装信号处理程序的方式.如果使用不推荐的
signal() 调用安装了信号处理程序,那么它将把信号处理程序重置为默认处理程序,或者在调用信号处理程序之前阻止正在处理的信号.如果它阻止了信号,它将在信号处理程序返回后解除阻塞.
如果使用 可以在sigaction()周围实现一个安全包装器,它具有类似于signal()的API: sighandler_t safe_signal (int sig,sighandler_t h) { struct sigaction sa; struct sigaction osa; sa.sa_handler = h; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; if (sigaction(sig,&sa,&osa) < 0) { return SIG_ERR; } return osa.sa_handler; } 这会在信号处理程序调用期间阻塞所有信号,并在信号处理程序返回后恢复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |