【发布时间】:2010-09-11 07:45:36
【问题描述】:
如果奇迹发生在我们的程序中出现段错误,我想捕获 SIGSEGV 并通过一个返回码让用户(可能是 GUI 客户端)知道发生了严重问题。同时我想在命令行上显示信息,以显示捕获到的信号。
今天我们的信号处理程序如下所示:
void catchSignal (int reason) {
std :: cerr << "Caught a signal: " << reason << std::endl;
exit (1);
}
我可以听到上面的恐怖尖叫声,正如我从thread 中读到的那样,从信号处理程序调用不可重入函数是邪恶的。
是否有一种可移植的方式来处理信号并向用户提供信息?
编辑:或者至少在 POSIX 框架内可移植?
【问题讨论】:
标签: c++ c posix signals reentrancy