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)この質問の答えは、manページのReal-time Signalsセクションにあります。

リアルタイムシグナル

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

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

関連情報