c - SIGUSR1 和 SIGUSR2 的区别

标签 c unix signals

阅读信号手稿时,我看到了信号表,看到有两个为 usr SIGUSR1 和 SIGUSR2 定义的信号。 两者之间有什么区别吗? 如果是这样,我应该什么时候选择使用一个而不是另一个? 如果没有区别,为什么两个信号服务于相同的目的?

最佳答案

您有两个信号可以满足您自己的需要。保证系统永远不会将它们交付给您的流程,因此您可以在它们上放置任何您想要的语义。为什么是两个?纯粹是任意的;只有一个肯定会很吝啬,所以他们给了我们两个,但他们本可以给更多。这是基于信号的通信的任意自由度。

我认为大多数时候这就足够了。我个人从来没有同时使用超过两个用户定义的...例如,使用这样的信号来警告正在执行一些消耗任务的服务器一些特殊的事情是“紧急”做的:读取一些东西通信 channel ,停止当前任务等。如果你需要两个以上的用户定义信号,这可能意味着你做了一个糟糕的设计并且过度使用它们。请记住,使用捕获信号会在您自己的代码中引起一些并发,这会对它的设计产生严重影响。

关于c - SIGUSR1 和 SIGUSR2 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27403641/

相关文章:

c - 以原子方式更改文件的属性

c - 是否可以在 Linux 中捕获其他进程信号?

c - 当进程再次执行时,使用 signal.h 终止在后台运行的进程

c - 返回 C 中带有 const 数组的结构体

c++ - 如何解析 TCP 数据包负载

文本到二进制转换器的类型冲突?

bash - 使用 awk 从标准输入或文件中读取

c - 同步访问共享内存

bash:为什么我不能在后台 shell 中为 SIGINT 设置陷阱?

c - openmp c sleep 的理发师