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.
*/
}