]> granicus.if.org Git - strace/blob - tests/rt_sigaction.c
Update copyright headers
[strace] / tests / rt_sigaction.c
1 /*
2  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
3  * Copyright (c) 2015-2018 The strace developers.
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  */
8
9 #include <assert.h>
10 #include <stdlib.h>
11 #include <unistd.h>
12 #include <signal.h>
13
14 static void handle_signal(int no)
15 {
16         _exit(128 + no);
17 }
18
19 int
20 main(void)
21 {
22         struct sigaction sa, sa0;
23
24         sa.sa_handler = SIG_IGN;
25         sigemptyset(&sa.sa_mask);
26         sigaddset(&sa.sa_mask, SIGHUP);
27         sigaddset(&sa.sa_mask, SIGINT);
28         sa.sa_flags = SA_RESTART;
29         assert(!sigaction(SIGUSR2, &sa, &sa0));
30
31         sa.sa_handler = handle_signal;
32         sigemptyset(&sa.sa_mask);
33         sigaddset(&sa.sa_mask, SIGQUIT);
34         sigaddset(&sa.sa_mask, SIGTERM);
35         sa.sa_flags = SA_SIGINFO;
36         assert(!sigaction(SIGUSR2, &sa, &sa0));
37
38         sa.sa_handler = SIG_DFL;
39         sigemptyset(&sa.sa_mask);
40         sa.sa_flags = 0;
41         assert(!sigaction(SIGUSR2, &sa, &sa0));
42
43         sigfillset(&sa.sa_mask);
44         sigdelset(&sa.sa_mask, SIGHUP);
45         assert(!sigaction(SIGUSR2, &sa, &sa0));
46
47         return 0;
48 }