(为什么)确实会重置信号处理程序?

问题描述:

这样看来,中raise(sig)执行重置与signal(sig, handlerFunction)安装了处理程序,即,在多线程程序,第一个线程调用abort()调用自定义handlerFunction,但如果任何其他线程,然后调用abort,这等线程只会呼叫exit(3)(为什么)确实会重置信号处理程序?

显然,signal + raise的行为是这样规定的。维基百科的文章sigaction

...更换不可靠和弃用signal()功能。信号 由signal()接口安装的处理程序将在执行处理程序之前立即被卸载 。永久处理程序必须 因此被以signal()呼叫处理程序的 执行期间重新安装,造成...

所以看来这是预期的行为。 (当然,MSDN文档似乎完全没有提到这一点。)

SO上的问题:What is the difference between sigaction and signal?