paulo1205
(usa Ubuntu)
Enviado em 24/02/2016 - 09:43h
Nele se declaram as funções, tipos e constantes associadas ao recebimento de sinais.
Sinais, por sua vez, são notificações assíncronas que o sistema operacional envia ao processo. Tipicamente, o recebimento de um sinal provoca uma interrupção na execução normal do processo.
A maioria dos sinais pode ser interceptada pelo processo, fazendo com que a interrupção provoque um desvio para uma função especial do programa destinada a tratar o evento que provocou a interrupção. Esses mesmos sinais também podem ser ignorados ou temporariamente bloqueados, a critério do programador.
Se um programador não definir tratamento específico para um determinado sinal mas tal sinal chegar ao processo, o sistema aplica um dos tratamentos
default. Para a maioria dos sinais, o tratamento
default é terminar o programa (às vezes com salvamento em disco do conteúdo da memória (
core dump), para eventual análise da causa raiz do evento). Outros sinais são ignorados por
default, e alguns provocam pausa na execução, até que algum outro evento externo provoque sua retomada exatamente a partir do ponto em que ela havia parado.
Há dois sinais que nunca podem ser interceptados nem ignorados pelo programa: SIGKILL e SIGSTOP. As consequências de tais sinais são sempre, respectivamente, matar o processo e interromper sua execução até que seja enviado um novo sinal que permita a continuação da execução.
Sinais podem ser manualmente enviados por um processo a outro processo (ou a si mesmo), mas podem também ser gerados pelo próprio sistema operacional, geralmente para notificar o processo sobre a ocorrência de eventos externos, tais como queda de canal de comunicação (SIGHUP, SIGPIPE), esvaziamento de um buffer (SIGPOLL) ou término da execução de um processo filho (SIGCHLD), bem como de uma situação excepcional provocada pelo próprio programa, tais como instrução ilegal (SIGILL), operação matemática ilegal (SIGFPE), ou falha de segmentação (SIGSEGV).
Na seção 7 do manual on-line, o verbete “signal” traz, entre outras informações, uma lista dos sinais padronizados, juntamente com os sentidos com que foram projetados e o tratamento
default a eles dispensados (digite, no terminal, o comando “man 7 signal”).