Проверка вывода 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 равно 34, а не 32.
... 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 поддерживает диапазон из 32 различных сигналов реального времени, пронумерованных
33
до64
. Однакоglibc
реализация потоков POSIX внутренне использует два (для NPTL) или три (для LinuxThreads) сигнала реального времени (см.pthreads(7)
), и корректирует значениеSIGRTMIN
соответствующим образом (до34
или35
).