1:
2:
3: #include <assert.h>
4: #include <errno.h>
5: #include <stdio.h>
6: #include <stdlib.h>
7: #include <unistd.h>
8: #include <sys/types.h>
9: #include <sys/wait.h>
10:
11: static void
12: sig_handler (int signum)
13: {
14: pid_t child = fork ();
15: if (child == 0)
16: exit (0);
17: TEMP_FAILURE_RETRY (waitpid (child, NULL, 0));
18: }
19:
20: static int
21: do_test (void)
22: {
23: pid_t parent = getpid ();
24:
25: struct sigaction action = { .sa_handler = sig_handler };
26: sigemptyset (&action.sa_mask);
27:
28: malloc (sizeof (int));
29:
30: if (sigaction (SIGALRM, &action, NULL) != 0)
31: {
32: puts ("sigaction failed");
33: return 1;
34: }
35:
36:
37: pid_t child = fork ();
38: if (child == 0)
39: {
40: if (kill (parent, SIGALRM) == -1)
41: perror ("kill");
42: exit (0);
43: }
44:
45: TEMP_FAILURE_RETRY (waitpid (child, NULL, 0));
46:
47: return 0;
48: }
49:
50: #define TEST_FUNCTION do_test ()
51: #include "../test-skeleton.c"