sinal

Descrição

  • É um mecanismo usado para notificar um processo da ocorrência de um evento.
  • É uma interrupção de software.
  • Um sinal é definido como um número inteiro, mas recebe um nome simbólico com prefixo “SIG” (o número pode variar nos sistemas Unix-like, mas o nome é sempre o mesmo).

Tipos de sinal

No Linux, existem duas categorias de sinal:

  • Padrão (standard) – os sinais recebem numeração de 1 a 31. Apenas um dos sinais do mesmo tipo é enfileirado para ser processado, o resto é ignorado.
  • Tempo real (realtime) – os sinais recebem numeração acima de 31. Todos os sinais são enfileirados e processados na ordem de chegada.

Ações

Cada sinal tem uma disposição que determina como o processo se comporta quando recebe um sinal.

  • Term – a ação padrão é terminar o processo.
  • Ign – a ação padrão é ignorar o sinal.
  • Core – a ação padrão é terminar o processo e gerar um dump core.
  • Stop – a ação padrão é parar a execução do processo até receber uma outra ordem (para continuar ou terminar).
  • Cont – a ação padrão é continuar a execução do processo.

Comandos

A lista dos sinais do Linux que você está usando pode ser obtida com os seguintes comandos:

  • man – a seção 2 do manual fornece informações sobre a chamada de sistema signal( ), enquanto a seção 7 apresenta uma visão geral sobre sinais.

man 7 signal

  • kill – para ver a lista dos sinais, basta digitar

kill -l

Abaixo uma possível saída. Note que o prefixo “SIG” não é mostrado.

HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

A saída do comando corresponde aos nomes de todos os sinais usados no sistema, inclusive os sinais da categoria realtime.

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) SIGRTMAX+14
49) SIGRTMAX+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
63) SIGRTMAX

 

fuser -l

Abaixo o resultado do comando. Note que existem diferenças em relação ao comando anterior que podem ser explicadas pelo fato de um sinal ter mais de um nome (sinônimos): ABRT = IOT; POLL = IO; SYS = UNUSED.

HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS UNUSED

Lista

A tabela abaixo os sinais da categoria standard (padrão) atualmente usados pelo kernel 4.15.

Número Nome  Ação  Evento
1 SIGHUP Term Fechamento do terminal associado ao processo ou término do processo de controle
2 SIGINT Term Solicitada a interrupção (término) do processo
3 SIGQUIT Core Solicitado o término do processo e a geração de um core dump
4 SIGILL Core Instrução inválida, incorretamente formatada ou sem permissão
5 SIGTRAP Core Encontrada condição marcada pelo debugger/trace
6 SIGABRT Core Solicitado o término anormal do processo
7 SIGBUS Core Erro no acesso a um endereço de memória
8 SIGFPE Core Erro aritmético
9 SIGKILL Term Ordena o término imediato do processo
10 SIGUSR1 Term Livre (uso a ser definido pelo programador)
11 SIGSEGV Core Acesso a um endereço de memória inválido
12 SIGUSR2 Term Livre (uso a ser definido pelo programador)
13 SIGPIPE Term O processo-destino (de um pipe, de uma FIFO ou um desocket) não está conectado
14 SIGALRM Term Tempo especificado para um alarme expirou
15 SIGTERM Term Ordena o término do processo (este sinal pode ser ignorado)
16 SIGSTKFLT Term Definido para “stack fault on coprocessor“, mas não é usado (este tipo de erro não ocorre nos co-processadores x86)
17 SIGCHLD Ign Término ou parada de um processo-filho
18 SIGCONT Cont Permissão para continuar a execução
19 SIGSTOP Stop O processo deve parar a execução até receber uma outra ordem
20 SIGTSTP Stop O processo deve parar a execução até receber uma outra ordem (este sinal pode ser ignorado)
21 SIGTTIN Stop Processo em background tentou ler de um terminal (tty)
22 SIGTTOU Stop Processo em background tentou escrever em um terminal (tty)
23 SIGURG Ign Existem dados urgentes para serem lidos no socket
24 SIGXCPU Core Tempo limite de CPU excedido
25 SIGXFSZ Core Tamanho limite de um arquivo excedido
26 SIGVTALRM Term Tempo limite de CPU no modo usuário expirado
27 SIGPROF Term Tempo limite de CPU no modo kernel e no modo usuário expirado
28 SIGWINCH Ign Mudança no tamanho da janela do terminal
29 SIGIO Term Arquivo disponível para I/O
30 SIGPWR Term Nível de energia do nobreak está baixo
31 SIGSYS Core Argumento da chamada de sistema inválido

 

Sumário      |      Topo