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

最佳答案

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

传统上,有两种用户定义的信号:SIGUSR1SIGUSR2。但是,最近的实现有一种叫做“POSIX实时信号”的东西,它提供了更多的用户定义的信号。

10-08 02:01