blob: c6f1fb52c77ec8f2fe98bbb7e7b20b7c2c7c1891 [file] [log] [blame]
sewardjb2572b52011-06-26 09:36:38 +00001#include <stdio.h>
2#include <signal.h>
3#include <unistd.h>
4static int sigalrm_received = 0;
5
6static void sigalrm_handler(int signr)
7{
8 sigalrm_received++;
9}
10
11int main (int argc, char *argv[])
12{
13 struct sigaction sa;
14 fprintf(stderr, "starting ...\n");
15 sa.sa_handler = sigalrm_handler;
16 sigemptyset(&sa.sa_mask);
17 sa.sa_flags = 0;
18 sa.sa_restorer = NULL;
19 if (sigaction (SIGALRM, &sa, NULL) != 0)
20 perror("sigaction");
21 if (kill(getpid(), SIGALRM) != 0)
22 perror("kill 1");
23
24 if (sigalrm_received == 1)
25 fprintf (stderr, "ok: 1st SIGALRM received\n");
26 else
27 fprintf (stderr, "wrong 1st: unexpected value %d sigalrm_received\n",
28 sigalrm_received);
29
30 if (kill(getpid(), SIGALRM) != 0)
31 perror("kill 2");
32
33 if (sigalrm_received == 2)
34 fprintf (stderr, "ok: 2nd SIGALRM received\n");
35 else
36 fprintf (stderr, "wrong 2nd: unexpected value %d sigalrm_received\n",
37 sigalrm_received);
38
39 return 0;
40}