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