发送USR2信号后忽略信号处理程序

时间:2014-11-20 19:37:38

标签: c++ c linux unix signals

我有一个问题。我正在为这样的信号定义自己的处理程序。

    sig_11.sa_handler = &signal1_SIGILL;
    sig_11.sa_flags=SA_NODEFER;
   if (sigaction(SIGUSR2, &sig_12, NULL ) < 0) {
       perror ("sigaction");             
       return 1;
     }

我正在为不同的信号创建这样的处理程序。但这并不重要。
在我发送USR2信号之前,一切看起来都很好。似乎这使得进程忽略所有其他信号。它不会终止进程而只是忽略所有其他信号 这是正常的行为吗?

1 个答案:

答案 0 :(得分:0)

你没有初始化sa_mask,你没有告诉我们sig_11变量是如何创建的,也不是在处理程序中做了什么,但我怀疑这个值是坏的在sa_mask中设置,因此至少在处理程序运行期间可能会阻止某些信号。通常在处理程序结束时,事情会恢复正常。

至少SIGKILL可以使用,因为它无法阻止或捕获。