Pular para o conteúdo
Campanário dos Sinais

/static/campanario/conceito/

Menu

O conceito, em uma página só

Do teletipo ao campanário

De onde vêm os sinais, por que tantos nomes parecem fósseis, e o que uma torre de sinos tem a ver com o kernel.

Sinais são o mecanismo mais antigo de comunicação entre processos do Unix: assíncronos, sem carga útil, um número e nada mais. Nasceram na Bell Labs nos anos setenta, quando o terminal era um teletipo pendurado numa linha telefônica — e o vocabulário ficou: SIGHUP é, literalmente, o telefone desligado.

A metáfora desta coleção: o kernel é o campanário sobre a cidade de processos. Cada sino tem seu toque com significado combinado — uns anunciam (um filho terminou, a janela mudou), uns alertam (as falhas do programa), e um deles derruba a torre sem que o processo sequer o ouça.

O que um processo pode fazer com um toque

Três coisas: pendurar um handler (dar ao toque o seu próprio significado), bloquear o sinal (tapar os ouvidos por um tempo — o toque espera na fila) ou ignorá-lo de vez. As exceções são SIGKILL e SIGSTOP, que não tocam para o processo, e sim para o kernel: não podem ser capturados, bloqueados nem ignorados.

Quando um sinal fatal encerra um processo, o shell anota a morte no código de saída: 128 mais o número do sino. 130 é o Ctrl+C; 137, a bala do kill -9.

Os números variam; os nomes, não

O kill -9 e o kill -15 viraram folclore, mas os números mudam de arquitetura para arquitetura — SIGUSR1 é 10 no x86-64 e 30 no SPARC. Os números citados nas etiquetas desta coleção são os do Linux em x86-64, conforme o signal(7); em scripts, chame os sinos pelo nome.

Por que muitas páginas pequenas

Pelo mesmo motivo do herbário e do relicário: cada sino, cada gaveta, cada ordenação e este próprio texto são arquivos HTML separados, ligados por links, escritos por um gerador de algumas centenas de linhas. Estado vira endereço; o navegador cuida do resto.