c - 减少 C 中每个 kill() 函数之间的时间

标签 c signals kill pid

嗨,有没有人知道一种发送信号 SIGUSR1/2 而不会丢失到另一个 pid 的方法?

问题是当我将 kill(pid, SIGUSR1) 放入 while 循环时,我的其他程序只收到其中的几个,它似乎有损失,我必须在两次调用 kill() 之间等待。 我实际上被迫在我的循环中使用 usleep() 以接收我发送的所有 SIGUSR 信号。 我希望尽快收到所有这些。

谢谢。

最佳答案

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

关于c - 减少 C 中每个 kill() 函数之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5067252/

相关文章:

javascript - Node : get child processes of a daemon and kill them

bash - 如何阻止信号杀死我的 Bash 脚本?

linux - 如何使用板载键盘的击键干净地杀死 Ubuntu 板载键盘

c - C语言读取文本文件

c - 为什么 valgrind 仅通过多次运行程序就报告不同的结果(不可能/仍然可以到达泄漏)?

c++ - GTK 3 如何将一个信号连接到多个小部件?

c++ - 从 C++ 代码控制不同的应用程序(Adobe Reader、Word、Windows Media Player、Powerpoint 等)

c - 保存后从 C 中的二进制文件中读取

c - 当您不知道缓冲区大小时如何避免危险的 vsprintf

c - 一次结束 C 程序的多个实例?