Home | History | Annotate | Download | only in tests
      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, 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