Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们有一个库,它向kill(pid, SIGUSR2)提到pid的在我们的案例中大部分时间都在运行的信号发送信号。该进程具有信号命令,该命令具有与该信号相关的信号处理。
kill(pid, SIGUSR2)
pid
我可以看到这个 kill 命令正在工作并返回成功(0),但相应的信号处理程序有时会被调用,有时不会。
这种不一致的原因可能是什么?
我得到了解决方案,基本上其他一些代码阻塞了SIGUSR2信号,所以我只是使用它解除阻塞sigprocmask(SIG_UNBLOCK, &set, NULL);并且它工作。
SIGUSR2
sigprocmask(SIG_UNBLOCK, &set, NULL);
它只发生第一次的原因是它被阻塞的持续时间,基本上他们在解除阻塞之前阻塞了一段时间,这里的代码路径执行是这个进程第一次在这段时间内无法选择信号。