O Linux suporta sinais confiáveis POSIX (doravante "sinais padrão") e sinais POSIX em tempo real.
Sinais Padrão
O Linux suporta os sinais padrão listados abaixo. Vários números de sinal são dependentes da arquitetura, conforme indicado na coluna "Valor". (Onde três valores são dados, o primeiro é geralmente válido para alfa e sparc, o intermediário para i386, ppc e sh, e o último para mips.
A - indica que um sinal está ausente na arquitetura correspondente.
As entradas na coluna "Ação" da tabela especificam a ação padrão do sinal, da seguinte maneira:
Prazo
A ação padrão é encerrar o processo.
Ign
A ação padrão é ignorar o sinal.
Testemunho
A ação padrão é terminar o processo e despejar o núcleo.
Pare
A ação padrão é parar o processo.
Primeiro os sinais descritos no padrão POSIX.1 original.
Sinal | Valor | Açao | Comente |
ou morte do processo de controle | |||
SIGINT | 2 | Prazo | Interromper do teclado |
SIGQUIT | 3 | Testemunho | Saia do teclado |
SIGILL | 4 | Testemunho | Instrução Ilegal |
SIGABRT | 6 | Testemunho | Anular o sinal de abortar (3) |
SIGFPE | 8 | Testemunho | Exceção de ponto flutuante |
SIGKILL | 9 | Prazo | Sinal de matar |
SIGSEGV | 11 | Testemunho | Referência de memória inválida |
SIGPIPE | 13 | Prazo | Tubo quebrado: escreva para canos sem leitores |
SIGALRM | 14 | Prazo | Sinal do temporizador alarme (2) |
SIGTERM | 15 | Prazo | Sinal de terminação |
SIGUSR1 | 30,10,16 | Prazo | Sinal definido pelo usuário 1 |
SIGUSR2 | 31,12,17 | Prazo | Sinal definido pelo usuário 2 |
SIGCHLD | 20,17,18 | Ign | Criança parada ou terminada |
SIGCONT | 19,18,25 | Continue se parado | |
SIGSTOP | 17,19,23 | Pare | Processo de parada |
SIGTSTP | 18,20,24 | Pare | Pare de digitar em tty |
SIGTTIN | 21,21,26 | Pare | entrada tty para o processo em segundo plano |
SIGTTOU | 22,22,27 | Pare | tty saída para o processo em segundo plano |
Os sinaisSIGKILL eSIGSTOP não pode ser capturado, bloqueado ou ignorado.
Em seguida, os sinais não estão no padrão POSIX.1, mas são descritos no SUSv2 e no SUSv3 / POSIX 1003.1-2001.
Sinal | Valor | Açao | Comente |
SIGPOLL | Prazo | Evento poluível (Sys V). Sinônimo de SIGIO | |
SIGPROF | 27,27,29 | Prazo | Temporizador de criação de perfil expirado |
SIGSYS | 12,-,12 | Testemunho | Argumento incorreto para a rotina (SVID) |
SIGTRAP | 5 | Testemunho | Trace / breakpoint trap |
SIGURG | 16,23,21 | Ign | Condição urgente na tomada (4.2 BSD) |
SIGVTALRM | 26,26,28 | Prazo | Despertador virtual (4.2 BSD) |
SIGXCPU | 24,24,30 | Testemunho | Limite de tempo de CPU excedido (4.2 BSD) |
SIGXFSZ | 25,25,31 | Testemunho | Limite de tamanho de arquivo excedido (4.2 BSD) |
Até e incluindo o Linux 2.2, o comportamento padrão paraSIGSYS, SIGXCPU, SIGXFSZe (em arquiteturas diferentes de SPARC e MIPS)SIGBUS foi para encerrar o processo (sem um despejo de núcleo). (Em alguns outros Unices, a ação padrão paraSIGXCPU eSIGXFSZ é terminar o processo sem um dump principal.) O Linux 2.4 está em conformidade com os requisitos do POSIX 1003.1-2001 para esses sinais, encerrando o processo com um dump principal.
Em seguida, vários outros sinais.
Sinal | Valor | Açao | Comente |
SIGEMT | 7,-,7 | Prazo | |
SIGSTKFLT | -,16,- | Prazo | Erro de pilha no coprocessador (não utilizado) |
SIGIO | 23,29,22 | Prazo | E / S agora possível (4.2 BSD) |
SIGCLD | -,-,18 | Ign | Sinônimo de SIGCHLD |
SIGPWR | 29,30,19 | Prazo | Falha de energia (sistema V) |
SIGINFO | 29,-,- | Um sinônimo para SIGPWR | |
SIGLOST | -,-,- | Prazo | Bloqueio de arquivo perdido |
SIGWINCH | 28,28,20 | Ign | Sinal de redimensionamento da janela (4.3 BSD, Sun) |
SIGUMADO | -,31,- | Prazo | Sinal não utilizado (será SIGSYS) |
(O sinal 29 éSIGINFO / SIGPWR em um alfa, masSIGLOST em um sparc.)
SIGEMT não é especificado no POSIX 1003.1-2001, mas nunca aparece na maioria dos outros Unices, onde sua ação padrão normalmente é encerrar o processo com um dump principal.
SIGPWR (que não é especificado no POSIX 1003.1-2001) é normalmente ignorado por padrão nos outros Unices onde aparece.
SIGIO (que não é especificado no POSIX 1003.1-2001) é ignorado por padrão em vários outros Unices.
Sinais em tempo real
O Linux suporta sinais em tempo real conforme originalmente definidos nas extensões em tempo real do POSIX.4 (e agora incluídas no POSIX 1003.1-2001). O Linux suporta 32 sinais em tempo real, numerados de 32 (SIGRTMIN) a 63 (SIGRTMAX). (Os programas devem sempre se referir a sinais em tempo real usando notaçãoSIGRTMIN+ n, já que o intervalo de números de sinais em tempo real varia entre os Unices.)
Ao contrário dos sinais padrão, os sinais em tempo real não têm significados pré-definidos: todo o conjunto de sinais em tempo real pode ser usado para propósitos definidos pelo aplicativo. (Observe, no entanto, que a implementação do LinuxThreads usa os três primeiros sinais em tempo real.)
A ação padrão para um sinal não tratado em tempo real é finalizar o processo de recebimento.
Sinais em tempo real são distinguidos pelo seguinte:
- Várias instâncias de sinais em tempo real podem ser enfileiradas. Por outro lado, se várias instâncias de um sinal padrão forem entregues enquanto esse sinal estiver bloqueado no momento, apenas uma instância será enfileirada.
- Se o sinal for enviado usandosigqueue(2), um valor de acompanhamento (um inteiro ou um ponteiro) pode ser enviado com o sinal. Se o processo de recebimento estabelecer um manipulador para este sinal usando oSA_SIGACTION bandeira parasigação(2) então ele pode obter esses dados através do si_value campo do siginfo_t estrutura passada como o segundo argumento para o manipulador. Além disso, o si_pid e si_uid campos dessa estrutura podem ser usados para obter o PID e o ID do usuário real do processo que envia o sinal.
- Sinais em tempo real são entregues em uma ordem garantida. Vários sinais em tempo real do mesmo tipo são entregues na ordem em que foram enviados. Se diferentes sinais em tempo real são enviados para um processo, eles são entregues começando com o sinal de menor número. (Isto é, os sinais de baixo número têm a maior prioridade).
Se os sinais padrão e em tempo real estiverem pendentes para um processo, o POSIX não o especifica, o qual é entregue primeiro. O Linux, como muitas outras implementações, dá prioridade aos sinais padrão neste caso.
De acordo com POSIX, uma implementação deve permitir que pelo menos _POSIX_SIGQUEUE_MAX (32) sinais em tempo real sejam enfileirados em um processo. No entanto, em vez de colocar um limite por processo, o Linux impõe um limite para todo o sistema no número de sinais em tempo real enfileirados para todos os processos.
Este limite pode ser visualizado (e com privilégio) alterado através do / proc / sys / kernel / rtsig-max Arquivo. Um arquivo relacionado, / proc / sys / kernel / rtsig-max , pode ser usado para descobrir quantos sinais em tempo real estão enfileirados no momento.
DE ACORDO COM
POSIX.1
Importante: Use o homem comando ( % homem ) para ver como um comando é usado em seu computador particular.