(为什么)确实会重置信号处理程序?
问题描述:
这样看来,中raise(sig)
执行重置与signal(sig, handlerFunction)
安装了处理程序,即,在多线程程序,第一个线程调用abort()
将调用自定义handlerFunction
,但如果任何其他线程,然后调用abort,这等线程只会呼叫exit(3)
。(为什么)确实会重置信号处理程序?
答
显然,signal + raise的行为是这样规定的。维基百科的文章sigaction
:
...更换不可靠和弃用
signal()
功能。信号 由signal()
接口安装的处理程序将在执行处理程序之前立即被卸载 。永久处理程序必须 因此被以signal()
呼叫处理程序的 执行期间重新安装,造成...
所以看来这是预期的行为。 (当然,MSDN文档似乎完全没有提到这一点。)