1
2 pid_t pid;
3 int counter = 0;
4
5 void handler1(int sig)
6 {
7 counter++;
8 printf("counter = %d\n", counter);
9 fflush(stdout);
10 kill(pid, SIGUSR1);
11 }
12
13 void handler2(int sig)
14 {
15 counter += 3;
16 printf("counter = %d\n", counter);
17 exit(0);
18 }
19
20 int main()
21 {
22
23 Signal(SIGUSR1, handler1);
24
25 if ((pid = fork()) == 0) {
26 Signal(SIGUSR1, handler2);
27 kill(getppid(), SIGUSR1);
28 while(1) {
29 }
30 } else {
31 pid_t p;
32 int status;
33
34 if ((p = wait(&status)) > 0) {
35 counter += 2;
36 printf("counter = %d\n", counter);
37 }
38 }
39
40 return 0;
41 }