#define _XOPEN_SOURCE	600
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>
#include <time.h>
#include <errno.h>

void sighandler(int sig, siginfo_t *info, void *ctxt)
{
  // Use of printf() inside signal handlers is ill advised.
  printf("Caught: %d -> %d (pid: %d, uid: %d)\n", sig, info->si_value.sival_int, info->si_pid, info->si_uid);
  if (sig == SIGINT) exit(0);
}

int main(void)
{
  struct sigaction act;
  int i;

  act.sa_sigaction = &sighandler;
  act.sa_flags = SA_SIGINFO;
  for(i=0; i < 32; i++)
    sigaction(i, &act, NULL);

  while(1) pause();

  return 0;
}
