在linux中杀死并发出信号问题

时间:2012-10-16 11:23:08

标签: c signals

我们有一个lib,它向我们提到的kill(pid, SIGUSR2)信号发送pid信号,这个信号在我们的情况下大部分时间都在运行。该过程具有信号命令,其具有与该信号相关的信号处理。

我可以看到这个kill命令正在运行并返回成功(0),但是相应的信号处理程序被调用了一些次,有时则没有。

造成这种不一致的原因是什么?

1 个答案:

答案 0 :(得分:1)

我得到了解决方案,基本上其他一些代码阻止了SIGUSR2信号,所以我只是使用sigprocmask(SIG_UNBLOCK, &set, NULL);取消阻止它并且它有效。

它第一次发生的原因是它被阻止的持续时间,基本上它们在解锁之前被阻塞了一段时间,这里的代码路径执行是第一次这个过程在那段时间内无法选择信号。