信号和异常互不相关。您正在使用的内容(从异步信号处理程序引发异常)只能在支持该功能的少数编译器之间移植,例如GCC和Intel C / C ++ with
-fnon-call-exceptions。
就是说,您忘记做的是取消阻止信号:执行信号处理程序时,同一信号的传递被阻止,并且当信号处理程序因异常而退出时,它也不会变为未阻止状态。如下更改信号处理程序:
void SigactionHookHandler( int iSignal, siginfo_t * psSiginfo, void * psContext{ cout << "Signal Handler Exception Caught: std::exception -- signal : " << iSignal << " from SigactionHookHandler()" << endl; sigset_t x; sigemptyset (&x); sigaddset(&x, SIGSEGV); sigprocmask(SIG_UNBLOCK, &x, NULL); throw std::exception();}


