【发布时间】:2016-03-04 13:05:36
【问题描述】:
我有一个用于处理信号的 C 库的一部分的测试程序。这个测试程序中有很多代码 - 以至于我觉得在这里发布它只会让我更难回答我的问题。
基本上发生的事情是我强迫系统在后台线程内向我发送 SIGSEGV。我处理那个信号,然后测试就结束了。主线程将等待这个,信号处理程序的一部分是重新启动主线程。当主线程重新启动时我通过signal(SIGSEGV, SIG_DFL)恢复默认信号处理程序然后我得到另一个SIGSEGV。
我知道我有很多代码,这很可能是我的错,但是对于为什么 SIGSEGV 会触发两次有一个常见的解释吗?当我引起其他信号时,它不会发生(尽管我没有尝试所有这些信号)。
为了澄清我在 OS X 上,用 C 编写,用 gcc 编译。
【问题讨论】:
标签: c crash signals segmentation-fault