C- SIGUSR1究竟是什么语法

当我在kill()或signal()函数中使用SIGUSR1时,它在做什么? 这是一个宏吗? 我读到它是用户定义的,但它在哪里定义? 我可以制作一个SIGUSR10(或以编程方式制作不同信号类型的“arrays”)吗?

用户定义的信号意味着这些信号没有与SIGSEGVSIGCONTSIGSTOP等不同的确定含义。内核永远不会向进程发送SIGUSR1或SIGUSR2,因此您可以根据应用程序的需要设置信号的含义。 所有这些大写的SIG常量实际上是宏,它将扩展为一个整数,表示特定实现中的信号编号。 尽管不一定需要定义用户定义的信号,但是信号编号已经在特定实现中固定,并且它们可以安全地重新使用,因为除了用户之外不会发送任何信号。

传统上,有两个用户定义的信号: SIGUSR1SIGUSR2 。 然而,最近的实现具有称为“POSIX实时信号”的东西,其提供了几个用户定义的信号。

顾名思义,SIGUSR是保留供用户(开发者)使用的信号,没有任何“特殊”的预定义。 你不能制造10个,在大多数POSIX系统上只有两个 – SIGUSR1和SIGUSR2。

符号本身可能是也可能不是宏扩展,但最终将成为与int兼容的数值赋值。

要以有意义的方式使用它,您需要编写一个信号处理程序。 有关如何执行此操作的详细信息,请参阅signal()联机帮助页。