0

我们有一个库,它向kill(pid, SIGUSR2)提到pid的在我们的案例中大部分时间都在运行的信号发送信号。该进程具有信号命令,该命令具有与该信号相关的信号处理。

我可以看到这个 kill 命令正在工作并返回成功(0),但相应的信号处理程序有时会被调用,有时不会。

这种不一致的原因可能是什么?

4

1 回答 1

1

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

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

于 2012-10-29T07:38:53.133 回答