【发布时间】:2019-08-21 04:58:02
【问题描述】:
我编写了一个应用程序,我在 linux 中为不同的信号注册了信号处理程序的数量。
进程收到信号后,控制权将转移到我注册的信号处理程序。在这个信号处理程序中,我做了一些我需要做的工作,然后我想调用默认的信号处理程序,即 SIF_DFL 或 SIG_IGN 。
但是,SIG_DFL 和 SIG_ING 都是宏,它们分别扩展为数值 0 和 1,它们是无效的函数地址。
有什么方法可以调用默认操作,即SIG_DFL 或SIG_IGN?
为了达到SIG_DFL或SIG_ING的效果,我分别调用了exit(1)和什么都不做。但是对于像SIGSEGV 这样的信号,我也希望有核心转储。
一般来说,我希望我的默认行为与SIG_DFL 相同,并忽略与SIG_IGN 相同的行为,就像操作系统一样。
【问题讨论】: