왜 `kill -l`이 신호 번호 32와 33을 나열하지 않습니까?

왜 `kill -l`이 신호 번호 32와 33을 나열하지 않습니까?

kill -lLinux에서 실행하면 다음을 얻게 됩니다.

 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

32그리고 무슨 일이 일어났나요 33? 왜 목록에 없나요? 중간에 2를 건너뛰는 대신 1로 시작해서 62로 끝날 수도 있었겠죠?

답변1

으니까특허받지 않은 기술. 그렇기 때문에GNU C 라이브러리거의 모든 최신 Linux 배포판은 더 이상 처음 두 개의 실시간 신호를 사용하지 않습니다. NPTL은 구현입니다POSIX 스레드. NPTL은 내부적으로 처음 두 개의 실시간 신호를 사용합니다.

이 부분신호 매뉴얼 페이지매우 재미있다:

Linux 커널은 32번부터 64번까지 번호가 매겨진 33가지 실시간 신호를 지원합니다. 그러나 glibc POSIX 스레드 구현은 내부적으로 2개(NPTL의 경우) 또는 3개(LinuxThreads의 경우) 실시간 신호를 사용합니다(참조:병렬 스레드(7)), 값을 조정합니다.SIGRTMIN적절하게(34 또는 35까지). 사용 가능한 실시간 신호의 범위는 glibc 스레드 구현에 따라 변경되고(이 변경은 사용 가능한 커널 및 glibc에 따라 런타임에 발생할 수 있음) 실제로 실시간 신호의 범위는 UNIX 시스템마다 다르기 때문에 프로그램은 ~해야 한다라이브 신호를 참조하기 위해 하드 코딩된 숫자를 사용하지 마십시오., 그러나 실시간 신호는 항상 기호를 사용하여 참조되어야 합니다.SIGRTMIN+n 적절한 (런타임) 검사를 포함합니다. SIGRTMIN+n 이하신호 최대.

또한 glibc의 소스 코드도 확인했습니다.22호선. __SIGRTMIN+2를 추가하면 처음 두 개의 라이브 신호가 라이브 신호 범위에서 제외됩니다.

답변2

신호는 다음과 같기 때문입니다.

SIGWAITING 32 Ignore All LWPs blocked 
    SIGLWP 33 Ignore Virtual Interprocessor Interrupt for Threads Library 

Linux에서는 둘 다 지원되지 않습니다. (LWP 대표가벼운 장인정신)

원천:IBM DeveloperWorks Solaris에서 Linux로 마이그레이션 안내서

관련 정보