Segunda señal de llamada en sighandler, ¿para qué?

Recientemente he encontrado un código que utilizasignal:

  286 static void sighandler( int signum )
  287 {   
  288     alarmed = 1;
  289     signal( signum, sighandler );
  290 }
  291 
  292 void set_alarm( int seconds )
  293 {
  294     alarmed = 0;
  295     signal( SIGALRM, sighandler );
  296     alarm( seconds );
  297 }

Tengo algunos problemas para averiguar por qué necesito llamarsignal 2 veces, especialmente, ¿por qué necesito llamarsignal ensighandler? Sé lo que hace el código anterior pero no entiendo por qué necesito llamarsignal 2 veces.

Respuestas a la pregunta(3)

Su respuesta a la pregunta