blob: b5f19b561e8663b06e6cb7be9d9e20f61a9d7ff8 [file] [log] [blame]
Elliott Hughes5dec78d2014-02-26 15:56:23 -08001#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{
Elliott Hughes5a139222014-02-27 15:09:57 -080014 struct sigaction sa, sa0;
Elliott Hughes5dec78d2014-02-26 15:56:23 -080015
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;
Elliott Hughes5a139222014-02-27 15:09:57 -080021 assert(!sigaction(SIGUSR2, &sa, &sa0));
Elliott Hughes5dec78d2014-02-26 15:56:23 -080022
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;
Elliott Hughes5a139222014-02-27 15:09:57 -080028 assert(!sigaction(SIGUSR2, &sa, &sa0));
Elliott Hughes5dec78d2014-02-26 15:56:23 -080029
30 sa.sa_handler = SIG_DFL;
31 sigemptyset(&sa.sa_mask);
32 sa.sa_flags = 0;
Elliott Hughes5a139222014-02-27 15:09:57 -080033 assert(!sigaction(SIGUSR2, &sa, &sa0));
34
35 sigfillset(&sa.sa_mask);
36 sigdelset(&sa.sa_mask, SIGHUP);
37 assert(!sigaction(SIGUSR2, &sa, &sa0));
Elliott Hughes5dec78d2014-02-26 15:56:23 -080038
39 return 0;
40}