signal.h
Biblioteca padrão do C |
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.
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 | editar código-fonte]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