signal.h é um arquivo cabeçalho da biblioteca padrão da linguagem de programação C que contém protótipos para funções e definições para receber e manipular sinais. Sinais são notificações assíncronas de eventos diversos como falhas de hardware ou recepção de caracteres no terminal[1] que podem ser utilizadas como uma forma de comunicação entre processos.

Biblioteca padrão do C

A função signal() associa um comportamento que o processo deve ter ao receber o sinal, que pode ser o comportamento padrão, ignorar o sinal ou executar uma função específica. Em especial os sinais SIGKILL e SIGSTOP não podem ser tradados com uma função ou ignorados[2].

Também são providas as funções raise() e kill(). A primeira envia um sinal para o próprio processo[3] e a segunda envia um sinal para um outro processo ou para um outro grupo de processos[4].

A função associada ao recebimento de um sinal é chamada tratadora de sinais[5][6]. A execução do processo é suspensa até que a função retorne ou chame longjmp. O comportamento de um processo após ignorar os sinais SIGFPE (exceção de ponto flutuante), SIGILL (instrução ilegal) e SIGSEGV (falha de segmentação) que não tenha sido gerado por kill() ou raise() não é definido conforme o padrão POSIX[7].

Constantes editar

Constante Significado Disponibilidade
SIGHUP Desconexão POSIX
SIGINT Interrupção ANSI
SIGQUIT Sair POSIX
SIGILL Instrução ilegal ANSI
SIGABRT Abortar ANSI
SIGTRAP Armadilha de rastreio POSIX
SIGIOT Armadilha para IOT 4.2 BSD
SIGEMT Armadilha para EMT 4.2 BSD
SIGFPE Exceção de ponto flutuante ANSI
SIGKILL Matar processo POSIX
SIGBUS Erro no BUS 4.2 BSD
SIGSEGV Falha de segmentação ANSI
SIGSYS Argumento incorreto para syscall 4.2 BSD
SIGPIPE Pipe quebrado POSIX
SIGALRM Alarme POSIX
SIGTERM Término ANSI
SIGUSR1 Sinal definido pelo usuário 1 POSIX
SIGUSR2 Sinal definido pelo usuário 2 POSIX
SIGCHLD Mudança de estado no processo filho POSIX
SIGCLD Mesmo que SIGCHLD System V
SIGPWR Reinício por falha de energia System V
SIGXCPU Excedeu o tempo de CPU POSIX
SIGSTOP Pausar execução POSIX
SIGCONT Continuar execução POSIX

Referências

  1. «signal.h, signal - base signals». Consultado em 5 de Novembro de 2014. Arquivado do original em 5 de julho de 2010 
  2. «signal(2) - Linux man page» (em inglês). Linux Documentation. Consultado em 5 de Novembro de 2014 
  3. «BSD Library Functions Manual: raise(3)». Consultado em 5 de Novembro de 2014 
  4. «kill(2) - Linux man page» (em inglês). Linux Documentation. Consultado em 5 de Novembro de 2014 
  5. «Tópicos em Sistemas Operacioais: Processos e Sinais» (PDF). Consultado em 5 de Novembro de 2014  [ligação inativa]
  6. «MC504/MC514 - Sistemas Operacionais: Processos e Sinais» (PDF). Consultado em 5 de Novembro de 2014 
  7. «The Open Group Base Specifications Issue 7: signal - signal management». The Open Group. Consultado em 5 de Novembro de 2014