ExpertiDict

C · Avançado · Inglês · Técnico

signal

/ˈsɪɡ.nəl/substantivo

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

Veja também

Todos os termos de C