为什么只有两个用户定义的信号?

为什么只有两个用户定义的信号?

在Linux系统定义的信号列表中,有两个信号被称为用户定义信号(SIGUSR1SIGUSR2)。其他信号将在特定情况下发出或捕获,但 SIGUSR 留给用户应用程序使用。

那么为什么只有两个信号呢?

答案1

历史上,Unix只有这两个信号,但现代系统有实时信号SIGRTMIN......。SIGRTMAX

由于信号 API 的古怪且不可移植的语义,几乎没有信号比管道等其他通信机制更可取的用例。因此,从未认为有必要分配新的信号编号。

答案2

信号仅提供一种原始的通信方式。具体来说,信号无法附加任何信息。接收者只知道信号编号,不知道发送者的身份。多个信号可以合并为一个。考虑到所有这些限制,信号的用途并不多。

对于更复杂的目的,请使用更复​​杂的交互方式,例如管道或套接字。

相关内容