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.