Logo  

CS471/571 - Operating Systems

Displaying ./code/Signals/signal.c

#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>

void handler(int sig, siginfo_t *info, void *ctxt)
{
  printf("signal = %d\n", sig);
  printf("info   = %d\n", info->si_value.sival_int);
}

int main(void)
{
  struct sigaction sa;

  memset(&sa, 0, sizeof(struct sigaction));
  sa.sa_handler = NULL;
  sa.sa_sigaction = handler;
  sa.sa_flags = SA_RESTART | SA_SIGINFO;
  sa.sa_restorer = NULL;

  for(int sig = 0; sig < 32; sig++)
    sigaction(sig, &sa, NULL);

  while(1) pause();
  return 0;
}