]> granicus.if.org Git - strace/blob - tests/sigaction.c
tests: add a test for rt_sigaction output
[strace] / tests / sigaction.c
1 #include <assert.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <signal.h>
5
6 static void handle_signal(int no)
7 {
8         _exit(128 + no);
9 }
10
11 int
12 main(void)
13 {
14         struct sigaction sa, sa1, sa2, sa3;
15
16         sa.sa_handler = SIG_IGN;
17         sigemptyset(&sa.sa_mask);
18         sigaddset(&sa.sa_mask, SIGHUP);
19         sigaddset(&sa.sa_mask, SIGINT);
20         sa.sa_flags = SA_RESTART;
21         assert(!sigaction(SIGUSR2, &sa, &sa1));
22
23         sa.sa_handler = handle_signal;
24         sigemptyset(&sa.sa_mask);
25         sigaddset(&sa.sa_mask, SIGQUIT);
26         sigaddset(&sa.sa_mask, SIGTERM);
27         sa.sa_flags = SA_SIGINFO;
28         assert(!sigaction(SIGUSR2, &sa, &sa2));
29
30         sa.sa_handler = SIG_DFL;
31         sigemptyset(&sa.sa_mask);
32         sa.sa_flags = 0;
33         assert(!sigaction(SIGUSR2, &sa, &sa3));
34
35         return 0;
36 }