0

似乎raise(sig)重置了安装的处理程序的实现signal(sig, handlerFunction),也就是说,在多线程程序中,第一个调用的线程调用 custom ,但如果任何其他线程随后调用 abort,则其他线程只会调用.abort() handlerFunctionexit(3)

4

1 回答 1

0

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

...替换不可靠和不推荐使用的signal()功能。接口安装的信号处理程序signal()将在处理程序执行之前立即卸载。因此,必须signal()在处理程序执行期间通过调用重新安装永久处理程序,从而导致...

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

SO上的问题:sigaction和signal有什么区别?

于 2013-08-02T11:15:27.400 回答