SIGRTMIN(最初のリアルタイム信号)の整数値が32ではなく34であるのはなぜですか? [コピー]

SIGRTMIN(最初のリアルタイム信号)の整数値が32ではなく34であるのはなぜですか? [コピー]

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*

答え1

この質問に対する答えはsignal(7)マニュアルページにあります。Real-time Signals

リアルタイム信号

Linuxは、もともとPOSIX.1bリアルタイム拡張(現在POSIX.1-2001に含まれています)で定義されたリアルタイム信号をサポートします。サポートされるリアルタイム信号の範囲はSIGRTMINマクロとによって定義されますSIGRTMAX。 POSIX.1-2001では、少なくともPOSIX_RTSIG_MAX(8)リアルタイム信号をサポートする実装が必要です。

33Linuxカーネルは、番号付き32のリアルタイム信号をサポートしています64。ただし、glibcPOSIXスレッド実装は内部的に2つ(NPTLの場合)または3つ(LinuxThreadsの場合)リアルタイム信号(参照pthreads(7))を使用し、値は適切に調整されますSIGRTMIN34またはの場合35)。

関連情報