使用系统调用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 18:00:59 浏览: 20
程序流程图:
```
+------------------+
| Parent |
+------------------+
| |
signal(SIGINT) waitpid(p1)
| |
kill(p1) waitpid(p2)
| |
| |
+------+ +------+
| p1 | | p2 |
+------+ +------+
| |
signal(SIGUSR1) signal(SIGUSR2)
| |
"p1 is killed" "p2 is killed"
| |
exit() exit()
```
具体步骤:
1. 使用系统调用fork()创建2个子进程p1和p2。
2. 在父进程中使用系统调用signal()捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C)。
3. 当捕捉到软中断信号SIGINT后,父进程使用系统调用kill()分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2。
4. 子进程p1和p2分别捕捉到信号SIGUSR1和SIGUSR2后,输出信息“Child process p1 is killed by parent!”或“Child process p2 is killed by parent!”。
5. 子进程p1和p2终止。
6. 父进程使用waitpid()等待子进程p1和p2终止。
7. 父进程输出信息“Parent process is killed!”后终止。