1
2 pid_t cpid;
3
4 void sigint_handler(int sig)
5 {
6 printf("pid %d got SIGINT, ", getpid());
7 if (cpid != 0 ) {
8 printf("sent SIGINT to child %d, then ", cpid);
9 kill(cpid, SIGINT);
10 }
11 printf("exited\n");
12 exit(0);
13 }
14
15
16 int main()
17 {
18
19 Signal(SIGINT, sigint_handler);
20 if ( (cpid = fork()) == 0 ) {
21 setpgid(0,0);
22 printf("child pid = %d, gid = %d\n", getpid(), getpgrp());
23 pause();
24 }
25
26 printf("parent pid = %d, gid = %d\n", getpid(), getpgrp());
27 pause();
28
29 return 0;
30 }