在unix高级编程的信号一章中,有个例子,讲到前台进程组多个进程同时接收终端信号。
为了能够深入理解这个问题,以及exec后父进程的信号捕获被子进程恢复为默认的情况,设计了一个小的程序来测试。
#include "apue.h"
2 #include <time.h>
3
4 static void
5 sig_int(int signo)
6 {
7 printf("caught SIGINT\n");
8 if (signal(SIGINT, sig_int) == SIG_ERR)
9 err_sys("signal(SIGINT) error");
10 }
11
12 static void
13 sig_chld(int signo)
14 {
15 printf("caught SIGCHLD\n");
16 }
17
18 int
19 main(void)
20 {
21 pid_t pid;
22 int status;
23 time_t starttime;
24
25 if (signal(SIGINT, sig_int) == SIG_ERR)
26 err_sys("signal(SIGINT) error");
27 if (signal(SIGCHLD, sig_chld) == SIG_ERR)
28 err_sys("signal(SIGC