本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下: 补全waitProcess函数,等待子进程结束,并且返回子进程的退出的代码。
时间: 2024-03-27 07:38:11 浏览: 519
好的,让我来帮你完成这个任务。你可以参考我之前给出的代码实现,补全 waitProcess 函数。
```
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
/************************
* 返回值: 调用成功且子进程正常退出返回退出代码,否则返回-1
*************************/
int waitProcess() {
int status = -1;
pid_t child_pid;
child_pid = waitpid(-1, &status, 0);
if (child_pid < 0) {
perror("waitpid");
return -1;
}
return status;
}
int main() {
pid_t pid = fork();
if (pid < 0) {
perror("fork");
return -1;
} else if (pid == 0) {
// 子进程执行的代码
printf("Child process\n");
return 0;
} else {
// 父进程执行的代码
int status = waitProcess();
printf("Parent process, child exit with status %d\n", status);
return 0;
}
}
```
在这个示例程序中,我们使用 fork 函数创建了一个子进程。在子进程中打印一条消息,然后退出。在父进程中调用 waitProcess 函数等待子进程的结束,并获取其退出状态码,最后打印出子进程的退出状态码。注意,我们在子进程中使用了 return 0 语句来退出,这个返回值会成为子进程的退出状态码。
阅读全文