使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。写出程序说明和程序流程图
时间: 2024-02-18 07:00:45 浏览: 69
程序说明:
该程序使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C)。当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2。子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。
程序流程图:
```
+------------------+
| Parent |
+------------------+
| |
signal(SIGINT) waitpid(p1)
| |
kill(p1) waitpid(p2)
| |
| |
+------+ +------+
| p1 | | p2 |
+------+ +------+
| |
signal(SIGUSR1) signal(SIGUSR2)
| |
"p1 is killed" "p2 is killed"
| |
exit() exit()
```
阅读全文