SIGALRM
O despertador: alarm() dá corda e o kernel toca na hora marcada.
O processo dá corda com alarm(segundos), segue a vida, e quando o prazo vence o kernel toca este sino. É o timeout original do Unix: antes de select ter prazo e de existir timerfd, era assim que se desistia de esperar.
O detalhe que morde: cada processo tem um só despertador deste — um alarm() novo cancela o anterior — e o sleep(3) de antigamente era implementado com ele. O utilitário timeout(1) é o herdeiro de balcão dessa ideia.
$ perl -e 'alarm 2; sleep 30'
Alarm clock
$ echo $?
142
(142 = 128 + 14: o despertador venceu o sono)