#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>

// Signal handlers are one-shot:
void sighandler(int sig)
{
  // Use of printf() inside signal handlers is ill advised.
  printf("Caught: %d\n", sig);
  if (sig == SIGINT) exit(0);
  // Restart our signal handler, use to be the default long ago.
  signal(sig, &sighandler);
}

int main(void)
{
  struct itimerval timer;
  int i;

  for(i=0; i < 32; i++)
    signal(i, &sighandler);

// alarm(2);
  timer.it_interval.tv_sec = 3;
  timer.it_interval.tv_usec = 0;
  timer.it_value.tv_sec = 3;
  timer.it_value.tv_usec = 0;

  setitimer(ITIMER_REAL, &timer, NULL);
  while(1) pause();

  return 0;
}
