Listing 3. Using SA_SIGINFO and sa_sigaction to Extract Information from a Signal #include #include #include #include #include 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. */ }