Listing 3. Using SA_SIGINFO and sa_sigaction to Extract Information from a Signal
  
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <bits/siginfo.h>
#include <stdio.h>
void handler (int signo, siginfo_t *info,
              void *context);
main () {
   struct sigaction my_action;
   my_action.sa_flags = SA_SIGINFO;
   my_action.sa_sigaction = handler;
   sigaction(SIGINT, &my_action, NULL);
   printf ("Catching SIGINT\n");
   sleep(5);
   printf ("Done.\n");
}
void handler (int signo, siginfo_t *info,
              void *context)
 {
    printf ("Signal number: %d\n", info->si_signo);
 /* Elements of the siginfo_t structure are listed
    in man 2 sigaction.
 */
}
  
  
  
  
  
  
  
  
  
    Copyright © 1994 - 2014 Linux Journal.  All rights reserved.