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の整数値が32ではなく34であることがわかります。
... 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*
この質問への回答は、signal(7)
のマニュアルページの_Real-time Signals
_セクションにあります。
リアルタイム信号
Linuxは、POSIX.1bリアルタイム拡張で最初に定義された(現在はPOSIX.1-2001に含まれている)リアルタイム信号をサポートしています。サポートされるリアルタイム信号の範囲は、マクロ
SIGRTMIN
およびSIGRTMAX
によって定義されます。 POSIX.1-2001では、実装が少なくともPOSIX_RTSIG_MAX(8)
リアルタイム信号をサポートする必要があります。Linuxカーネルは、_
33
_から_64
_まで番号が付けられた32種類のリアルタイム信号をサポートしています。ただし、glibc
POSIXスレッドの実装では、内部で2つ(NPTLの場合)または3つ(LinuxThreadsの場合)のリアルタイム信号(pthreads(7)
を参照)を使用し、SIGRTMIN
の値を適切に(_34
_または_35
_)。