Uma resposta completa precisa do código do seu pai, mas falta isso, aqui está uma sugestão do que provavelmente está acontecendo:
Especificações básicas do grupo aberto Edição 6 - Seção 2.11
When a signal for which a trap has been set is received while the shell is waiting for the completion of a utility executing a foreground command, the trap associated with that signal shall not be executed until after the foreground command has completed.
When the shell is waiting, by means of the
wait
utility, for asynchronous commands to complete, the reception of a signal for which a trap has been set shall cause thewait
utility to return immediately with an exit status >128, immediately after which the trap associated with that signal shall be taken.
(formatando o meu)
O que isto significa é que, se o seu pai está esperando com qualquer coisa, exceto o comando wait
, o manuseio do sinal é atrasado até o final do que está fazendo.
Cabe a você fazer com que seus pais esperem com wait
, para que ele possa receber seu SIGALRM imediatamente.