showsig.c

corecode, 07/15/2006 12:47 PM

Download (814 Bytes)

 
1
#include <err.h>
2
#include <signal.h>
3
#include <stdio.h>
4

    
5
const char *signames[] = {
6
        "NULL", "HUP", "INT", "QUIT", "ILL", "TRAP", "IOT",        /*  1 - 6  */
7
        "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS",                /*  7 - 12 */
8
        "PIPE", "ALRM",  "TERM", "URG", "STOP", "TSTP",                /* 13 - 18 */
9
        "CONT", "CHLD", "TTIN", "TTOU", "IO", "XCPU",                /* 19 - 24 */
10
        "XFSZ", "VTALRM", "PROF", "WINCH", "29", "USR1",        /* 25 - 30 */
11
        "USR2", NULL,                                                /* 31 - 32 */
12
};
13

    
14
int
15
main(int argc, char **argv)
16
{
17
        struct sigaction sa;
18
        int i;
19

    
20
        for (i = 1; i < 32; i++) {
21
                if (sigaction(i, NULL, &sa) != 0)
22
                        err(1, "sigaction");
23
                printf("SIG%s = ", signames[i]);
24
                if (sa.sa_handler == SIG_DFL)
25
                        printf("SIG_DFL\n");
26
                else if (sa.sa_handler == SIG_IGN)
27
                        printf("SIG_IGN\n");
28
                else
29
                        printf("%p", sa.sa_handler);        /* XXX oy? */
30
        }
31

    
32
        return 0;
33
}