我们有一个lib,它向我们提到的kill(pid, SIGUSR2)
信号发送pid
信号,这个信号在我们的情况下大部分时间都在运行。该过程具有信号命令,其具有与该信号相关的信号处理。
我可以看到这个kill命令正在运行并返回成功(0),但是相应的信号处理程序被调用了一些次,有时则没有。
造成这种不一致的原因是什么?
答案 0 :(得分:1)
我得到了解决方案,基本上其他一些代码阻止了SIGUSR2
信号,所以我只是使用sigprocmask(SIG_UNBLOCK, &set, NULL);
取消阻止它并且它有效。
它第一次发生的原因是它被阻止的持续时间,基本上它们在解锁之前被阻塞了一段时间,这里的代码路径执行是第一次这个过程在那段时间内无法选择信号。