1#include <assert.h>
2#include <stdlib.h>
3#include <unistd.h>
4#include <signal.h>
5
6static void handle_signal(int no)
7{
8	_exit(128 + no);
9}
10
11int
12main(void)
13{
14	struct sigaction sa, sa0;
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, &sa0));
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, &sa0));
29
30	sa.sa_handler = SIG_DFL;
31	sigemptyset(&sa.sa_mask);
32	sa.sa_flags = 0;
33	assert(!sigaction(SIGUSR2, &sa, &sa0));
34
35	sigfillset(&sa.sa_mask);
36	sigdelset(&sa.sa_mask, SIGHUP);
37	assert(!sigaction(SIGUSR2, &sa, &sa0));
38
39	return 0;
40}
41