![为什么只有两个用户定义的信号?](https://linux22.com/image/25653/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8F%AA%E6%9C%89%E4%B8%A4%E4%B8%AA%E7%94%A8%E6%88%B7%E5%AE%9A%E4%B9%89%E7%9A%84%E4%BF%A1%E5%8F%B7%EF%BC%9F.png)
在Linux系统定义的信号列表中,有两个信号被称为用户定义信号(SIGUSR1
和SIGUSR2
)。其他信号将在特定情况下发出或捕获,但 SIGUSR 留给用户应用程序使用。
那么为什么只有两个信号呢?
答案1
历史上,Unix只有这两个信号,但现代系统有实时信号SIGRTMIN
......。SIGRTMAX
由于信号 API 的古怪且不可移植的语义,几乎没有信号比管道等其他通信机制更可取的用例。因此,从未认为有必要分配新的信号编号。
答案2
信号仅提供一种原始的通信方式。具体来说,信号无法附加任何信息。接收者只知道信号编号,不知道发送者的身份。多个信号可以合并为一个。考虑到所有这些限制,信号的用途并不多。
对于更复杂的目的,请使用更复杂的交互方式,例如管道或套接字。