把fork出错的结果代码补全pidA = fork(); if (pidA == 0) { // 子 A execl("/bin/ls", "ls", "-l", NULL); exit(0); } else { pidB = fork(); if (pidB == 0) { // 子 B execl("/bin/ps", "ps", "-a", NULL); exit(0); } else { // 父 wait(&status); // 等待子 A结束 printf("Son A exited with status %d\n", WEXITSTATUS(status)); wait(&status); // 等待子 B结束 printf("Son B exited with status %d\n", WEXITSTATUS(status)); } } }
时间: 2024-02-06 16:03:53 浏览: 28
补全后的代码如下:
```
pid_t pidA, pidB;
int status;
pidA = fork();
if (pidA == -1) {
perror("fork failed");
exit(1);
} else if (pidA == 0) { // 子 A
execl("/bin/ls", "ls", "-l", NULL);
exit(0);
} else {
pidB = fork();
if (pidB == -1) {
perror("fork failed");
exit(1);
} else if (pidB == 0) { // 子 B
execl("/bin/ps", "ps", "-a", NULL);
exit(0);
} else { // 父
wait(&status); // 等待子 A结束
printf("Son A exited with status %d\n", WEXITSTATUS(status));
wait(&status); // 等待子 B结束
printf("Son B exited with status %d\n", WEXITSTATUS(status));
}
}
```
在上述代码中,先创建了一个子进程 A,然后在子进程 A 中执行 `/bin/ls -l` 命令,接着再创建了一个子进程 B,然后在子进程 B 中执行 `/bin/ps -a` 命令。父进程则等待子进程 A 和子进程 B 完成后,分别输出它们的退出状态。需要注意的是,在代码中增加了对 `fork()` 返回值的错误检查,以防止 `fork()` 失败的情况。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![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)
![](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)
![](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)