嗨,有没有人知道一种发送信号 SIGUSR1/2 而不会丢失到另一个 pid 的方法?
问题是当我将 kill(pid, SIGUSR1) 放入 while 循环时,我的其他程序只收到其中的几个,它似乎有损失,我必须在两次调用 kill() 之间等待。 我实际上被迫在我的循环中使用 usleep() 以接收我发送的所有 SIGUSR 信号。 我希望尽快收到所有这些。
谢谢。
最佳答案
你需要使用sigaction()
而不是signal()
,因为sigaction()
可以控制当前信号阻塞哪些信号正在处理中。此外,您的接收器必须处理接收到的每个信号;与发送信号相比,这是相对昂贵的,因此您的 killer (信号)进程可以轻松地超过“被杀死”(接收)进程。你应该想想为什么你需要发送这么多信号。它们是一种在特殊情况下使用的机制。
关于c - 减少 C 中每个 kill() 函数之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5067252/