关于linux信号的几个问题
进程间通信(关于linux信号的几个问题,linux,signals,Linux,Signals,进程间通信(SIGRTMIN+1)安全吗?它会在不同的过程中发生变化吗 使用sigqueue(2)或kill(2)发送标准信号和实时信号有什么区别吗? 如果我使用sigqueue(2)发送一系列SIGUSR1(标准信号)并缓慢处理,队列中是否有多个SIGUSR1实例? 使用kill(2)发送SIGRTMIN(实时信号)怎么样?他们会排队吗 sigqueue()只能用于发送实时信号,kill()只能用于发送标准信号。我没有尝试用这两种API发送错误的信号。但我预计它会以某种适当的错误而失败。Lin
SIGRTMIN+1
)安全吗?它会在不同的过程中发生变化吗
sigqueue(2)
或kill(2)
发送标准信号和实时信号有什么区别吗?如果我使用
sigqueue(2)
发送一系列SIGUSR1
(标准信号)并缓慢处理,队列中是否有多个SIGUSR1
实例?使用
kill(2)
发送SIGRTMIN
(实时信号)怎么样?他们会排队吗 /*
* Real-time signals must be queued if sent by sigqueue, or
* some other real-time mechanism. It is implementation
* defined whether kill() does so. We attempt to do so, on
* the principle of least surprise, but since kill is not
* allowed to fail with EAGAIN when low on memory we just
* make sure at least one signal gets delivered and don't
* pass on the info struct.
*/
这篇文章是老新闻,但它在谷歌上排名很高,不幸具有误导性,因此这里有一些澄清:
是通过经验,通过阅读内核源代码,还是通过阅读Posix规范?如果您有一些源,共享它们会很有趣……但事实是
kill(2)
和sigqueue(2)
都可以发送任何信号而不会出现故障。我写了一个小测试来证明它们有效。但我不知道如何在评论中发布源代码。