2016-09-18 40 views
0

我在我的程序的信号处理程序,看起来像这样:与平台无关的方式转换成信号的数字为字符串

void signalHandler(int sig) 
{ 
    BOOST_LOG_SEV(logger, fatal) << "Received signal " << sig; 
    gQuit = true; 
} 

目前这产生这样的输出:

接收信号2

但我想看到的是类似于

接收信号SIGINT

我大概可以用strsignal(sig),其中should work on POSIX.1-2008 systems取代的sig输出。该解决方案是在这太问题讨论:

Signal number to name?

然而,在我的情况,我想避免引入特定于平台的代码。

是否boost或标准库提供了解决此问题的方法?

+0

对信号处理程序可以做什么存在严格限制,我不确定记录到文件是否是其中之一。如果这就是代码的作用。无论如何,你可以简单地在表格中查找信号ID。 –

+0

@ Cheersandhth.-Alf谢谢,我不知道有限制。 – arman

+0

http://stackoverflow.com/questions/16891019/how-to-avoid-using-printf-in-a-signal-handler –

回答

0

那么很难证明一个消极的,但我没有找到任何网上的东西,并没有得到答案,所以我认为这是;