Die Ausführung kill -l
unter Linux ergibt:
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
Was ist mit 32
und passiert 33
? Warum ist es nicht aufgeführt? Sie hätten bei 1 beginnen und bei 62 enden können, anstatt 2 in der Mitte auszulassen?
Antworten:
Es ist wegen NPTL . Da es Teil der GNU C-Bibliothek ist, verwendet fast jede moderne Linux-Distribution nicht mehr die ersten beiden Echtzeitsignale. NPTL ist eine Implementierung der POSIX-Threads . NPTL verwendet intern die ersten beiden Echtzeitsignale.
Dieser Teil der Signalmanpage ist sehr interessant:
Ich habe auch den Quellcode auf glibc überprüft. siehe Linie 22 .
__SIGRTMIN
wird +2 erhöht, so dass die ersten beiden Echtzeitsignale aus dem Bereich der Echtzeitsignale ausgeschlossen werden.quelle
Weil die Signale sind:
Beides wird unter Linux nicht unterstützt. (LWP steht für LightWeight Process )
Quelle: IBM DeveloperWorks Solaris zu Linux-Portierungshandbuch
quelle
Real-time Signals
Abschnitt.kill -l
RTMIN
beginnt bei 34, nicht bei 32 gemäß dem von Ihnen angegebenen Dokument. Dieser besagt, dass er bei 33 beginnt, aber Sie sollten sie nicht mit Zahlen referenzieren, da die Zahlen je nach Implementierung von Glibc-Threading variieren können.SIGRTMIN
Set mit einer#define
Linie, da diese Nummer möglicherweise später geändert wird, wenn die ausführbare Datei ausgeführt wird. Dies hätte sich vor einigen Jahren gezeigt, als beide pthread-Bibliotheken verwendet wurden, wenn eine Anwendung, die mit der einen pthread-Bibliothek kompiliert wurde, auf einem System ausgeführt wurde, das mit dem anderen neu gestartet wurde!