在Linux系统定义的信号列表中,有两个信号被称为用户定义信号(SIGUSR1
和SIGUSR2
)。其他信号将在特定情况下发出或捕获,但 SIGUSR 留给用户应用程序使用。
那么为什么只有两个信号呢?
答案1
历史上,Unix只有这两个信号,但现代系统有实时信号SIGRTMIN
......。SIGRTMAX
由于信号 API 的古怪且不可移植的语义,几乎没有信号比管道等其他通信机制更可取的用例。因此,从未认为有必要分配新的信号编号。
答案2
信号仅提供一种原始的通信方式。具体来说,信号无法附加任何信息。接收者只知道信号编号,不知道发送者的身份。多个信号可以合并为一个。考虑到所有这些限制,信号的用途并不多。
对于更复杂的目的,请使用更复杂的交互方式,例如管道或套接字。