Untersuchen der Ausgabe des kill -l
Befehls
$ 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
Man kann feststellen, dass der ganzzahlige Wert von SIGRTMIN 34 und nicht 32 ist.
... 31) SIGSYS 34) SIGRTMIN ...
Warum?
$ 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*
Antwort1
Die Antwort auf diese Frage finden Sie in signal(7)
der Manpage im Real-time Signals
Abschnitt
Echtzeitsignale
Linux unterstützt Echtzeitsignale, wie ursprünglich in den Echtzeiterweiterungen von POSIX.1b definiert (und jetzt in POSIX.1-2001 enthalten). Der Bereich der unterstützten Echtzeitsignale wird durch die Makros
SIGRTMIN
und definiertSIGRTMAX
. POSIX.1-2001 erfordert, dass eine Implementierung mindestensPOSIX_RTSIG_MAX(8)
Echtzeitsignale unterstützt.Der Linux-Kernel unterstützt einen Bereich von 32 verschiedenen Echtzeitsignalen, die
33
bis durchnummeriert sind64
. Dieglibc
POSIX-Thread-Implementierung verwendet jedoch intern zwei (für NPTL) oder drei (für LinuxThreads) Echtzeitsignale (siehepthreads(7)
) und passt den Wert vonSIGRTMIN
entsprechend an (auf34
oder35
).