接收到奇怪的信号

时间:2013-01-17 13:38:25

标签: c linux signals

我按照here所述在我的应用程序上设置信号过滤器,除了我阻止所有信号。

sigfillset (&signalSet);

我收到奇怪的信号#36,公共文档和/usr/include/bits/signum.h中没有描述。 但是,看起来这个信号影响主线程中的sem_wait(),并且没有被阻塞。我抓住了这样一个例外:

  

:: sem_wait()失败,代码:4(系统调用中断)

使用Red Hat 4.1.2-44(gcc版本4.1.2 20080704)。

1 个答案:

答案 0 :(得分:3)

这是一个POSIX实时信号。它们在SIGRTMIN + 1到SIGRTMAX的范围内(您应该在/usr/include/bits/signum.h中找到它)。

有关详细信息,请参阅man 7信号,“实时信号”部分。

如果用

阻止所有信号

sigfillset(&signalset); sigprocmask(SIG_BLOCK,&signalset,NULL);

sigfillset(&signalset); pthread_sigmask(SIG_BLOCK,&signalset,NULL); 仍然得到信号36,我猜你也使用了使用信号的库函数。

您可以使用'strace'来查看是否以及何时调用信号函数。