kill -l
检查命令的输出
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
可以注意到 SIGRTMIN 的整数值为 34,而不是 32。
... 31) SIGSYS 34) SIGRTMIN ...
为什么?
$ uname -r
4.19.0-8-amd64
$ ls -l /lib/x86_64-linux-gnu/libc-2.28.so
-rwxr-xr-x 1 root root 1.8M May 1 2019 /lib/x86_64-linux-gnu/libc-2.28.so*
答案1
这个问题的答案可以在手册signal(7)
页中找到Real-time Signals
实时信号
Linux 支持最初在 POSIX.1b 实时扩展中定义的实时信号(现在包含在 POSIX.1-2001 中)。支持的实时信号的范围由宏
SIGRTMIN
和定义SIGRTMAX
。 POSIX.1-2001 要求实现至少支持POSIX_RTSIG_MAX(8)
实时信号。Linux 内核支持 32 种不同的实时信号,编号
33
为64
。然而,glibc
POSIX 线程实现在内部使用两个(对于 NPTL)或三个(对于 LinuxThreads)实时信号(请参阅pthreads(7)
),并适当调整 的值SIGRTMIN
(为34
或35
)。