Você diz "o pai está esperando", e é por alguns ciclos, mas você "retorna 0", fazendo com que ele saia. Se você quiser receber o SIGCHLD, você precisa garantir que seus pais não saiam antes que a criança faça o que é necessário.
A maneira mais fácil de fazer isso: insira uma linha antes do seu return 0
:
sleep(10);
que fará com que seus pais esperem até 10 segundos.
Você notará que seu pai não espera por 10 segundos. A razão pela qual é deixada como um exercício para o leitor (sugestão: leia a man page; -)