C · Avançado · Inglês · Técnico
signal
Função de signal.h que registra um tratador para um sinal, como SIGINT ao pressionar Ctrl+C. O tratador roda de forma assíncrona, interrompendo o fluxo normal do programa.
Onde usar
Dentro do tratador só se pode chamar funções async-signal-safe e gravar em variáveis volatile sig_atomic_t. Chamar printf ou malloc ali é comportamento indefinido.
Em código
volatile sig_atomic_t parar = 0;
void trata(int s) { parar = 1; }
int main(void) {
signal(SIGINT, trata);
while (!parar) { /* trabalha */ }
}Exemplos
Register a handler with signal to catch Ctrl+C.
Registre um tratador com signal para pegar o Ctrl+C.
Just set a flag inside the signal handler.
Apenas ligue uma flag dentro do tratador de sinal.
Cuidado
Usar signal em programas novos: sigaction, do POSIX, tem comportamento mais previsível entre sistemas.
Sinônimos
tratador de sinal