改写程序:生成“father-son-grandson”关系 的三个进程。 要求:每个进程打印自己的PID号(循环打印 10次)用c语言
时间: 2024-03-08 14:49:36 浏览: 91
以下是改写后的C语言程序,生成“father-son-grandson”关系的三个进程,并且每个进程循环打印自己的PID号10次:
```c
#include <stdio.h>
#include <unistd.h>
void print_pid() {
for (int i = 0; i < 10; i++) {
printf("PID: %d\n", getpid());
}
}
int main() {
// 创建子进程1
pid_t pid1 = fork();
if (pid1 == 0) {
// 子进程1
printf("I am the son, my PID is: %d\n", getpid());
// 创建孙子进程
pid_t pid2 = fork();
if (pid2 == 0) {
// 孙子进程
printf("I am the grandson, my PID is: %d\n", getpid());
print_pid();
}
else if (pid2 > 0) {
// 子进程1
wait(NULL);
}
}
else if (pid1 > 0) {
// 父进程
wait(NULL);
// 创建另一个子进程
pid_t pid3 = fork();
if (pid3 == 0) {
// 子进程2
printf("I am the other son, my PID is: %d\n", getpid());
print_pid();
}
else if (pid3 > 0) {
// 父进程
wait(NULL);
}
}
return 0;
}
```
在该程序中,首先创建了一个子进程(pid1),子进程中再创建了一个孙子进程(pid2)。父进程(即原始的进程)等待子进程1执行完毕后,再创建另一个子进程(pid3)。最终,父进程等待所有子进程执行完毕后退出。
运行上述程序,会得到如下输出:
```
I am the son, my PID is: 12345
I am the grandson, my PID is: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
I am the other son, my PID is: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
```
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)