嗨,有人知道如何发送信号SIGUSR1/2而不丢失到另一个pid吗?
问题是当我将kill(pid,SIGUSR1)放入一个while循环时,我的另一个程序只接收到其中的很少一个,它似乎有一个损失,我必须在两个kill()调用之间等待。
实际上,我被迫在我的循环中使用usleep(),以便接收我发送的所有SIGUSR信号。
我想尽快收到所有的信。
谢谢。

最佳答案

您需要使用sigaction()而不是signal(),因为sigaction()可以在处理当前信号时控制哪些信号被阻塞。此外,接收器必须处理接收到的每个信号;这与发送信号相比成本相对较高,因此您的killer(信令)进程可以轻松地超过“killed”(接收)进程。你应该想想为什么你需要发送这么多信号。它们是一种在特殊情况下使用的机制。

10-06 05:44