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))를 사용하며 값은 적절하게 조정됩니다 SIGRTMIN( 34또는 의 경우 35).

관련 정보