A execução kill -l
no linux fornece:
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
O que aconteceu com 32
e 33
? Por que não está listado? Eles poderiam ter começado em 1 e terminado em 62 em vez de pular 2 no meio?
Respostas:
É por causa do NPTL . Como faz parte da biblioteca GNU C, quase todas as distribuições Linux modernas não usam mais os dois primeiros sinais em tempo real. NPTL é uma implementação dos threads POSIX . O NPTL faz uso interno dos dois primeiros sinais em tempo real.
Esta parte da página de manual do sinal é muito interessante:
Eu também verifiquei o código fonte para glibc; veja a linha 22 .
__SIGRTMIN
é aumentado em +2; portanto, os dois primeiros sinais em tempo real são excluídos da faixa de sinais em tempo real.fonte
Porque os sinais são:
Nenhum dos quais é suportado no Linux. (LWP significa LightWeight Process )
Fonte: IBM DeveloperWorks Solaris para Linux Guia de Portabilidade
fonte
Real-time Signals
seção.kill -l
RTMIN
início em 34, e não 32, conforme o documento referenciado. Este diz que começa em 33, mas continua dizendo que você não deve fazer referência a eles por números, pois os números podem variar dependendo da implementação do glibc threading.SIGRTMIN
conjunto com uma#define
linha porque esse número está sujeito a possíveis alterações posteriormente quando o executável for executado. Isso teria aparecido alguns anos atrás, quando as duas bibliotecas pthread estavam em uso se um aplicativo compilado na biblioteca pthread fosse executado em um sistema que foi reiniciado com a outra!