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)실시간 신호를 지원해야 합니다.

Linux 커널 3364. 그러나 glibcPOSIX 스레드 구현은 내부적으로 2개(NPTL의 경우) 또는 3개(LinuxThreads의 경우) 실시간 신호를 사용하고(참고자료 참조) pthreads(7)값을 SIGRTMIN적절하게 조정합니다(to 34또는 35).

관련 정보