似乎raise(sig)
重置了安装的处理程序的实现signal(sig, handlerFunction)
,也就是说,在多线程程序中,第一个调用的线程将调用 custom ,但如果任何其他线程随后调用 abort,则其他线程只会调用.abort()
handlerFunction
exit(3)
问问题
240 次
1 回答
0
显然,signal + raise 的行为就是这样指定的。来自维基百科的文章sigaction
:
...替换不可靠和不推荐使用的
signal()
功能。接口安装的信号处理程序signal()
将在处理程序执行之前立即卸载。因此,必须signal()
在处理程序执行期间通过调用重新安装永久处理程序,从而导致...
所以这似乎是预期的行为。(当然,MSDN 文档似乎完全没有提到这一点。)
SO上的问题:sigaction和signal有什么区别?
于 2013-08-02T11:15:27.400 回答