本关的编程任务是补全右侧代码片段中两段Begin至End中间的代码,具体要求如下: 创建子进程,创建完后,将 g_i4event 置为 1; 子进程等待 3s ,然后子进程退出; 父进程等待一秒,将 g_i4event 置为 2;然后等待子进程退出,父进程获取子进程退出的状态后将 g_i4event 置为 3; process_wait采用 wait 函数,process_waitpid 采#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include<sys/types.h> #include<sys/wait.h> int g_i4event; int process_wait(void) { /********Begin********/ /*********End*********/ } int process_waitpid(void) { /********Begin********/ /*********End*********/ }用 waitpid 函数。
时间: 2023-07-01 15:18:09 浏览: 448
process_wait函数的代码如下:
```
int process_wait(void) {
pid_t pid;
pid = fork(); // 创建子进程
if (pid < 0) { // 创建子进程失败
g_i4event = -1;
return -1;
} else if (pid == 0) { // 子进程
sleep(3); // 子进程等待 3s
exit(0); // 子进程退出
} else { // 父进程
g_i4event = 1; // 将 g_i4event 置为 1
sleep(1); // 父进程等待一秒
g_i4event = 2; // 将 g_i4event 置为 2
wait(NULL); // 等待子进程退出
g_i4event = 3; // 将 g_i4event 置为 3
return 0;
}
}
```
process_waitpid函数的代码如下:
```
int process_waitpid(void) {
pid_t pid;
int status;
pid = fork(); // 创建子进程
if (pid < 0) { // 创建子进程失败
g_i4event = -1;
return -1;
} else if (pid == 0) { // 子进程
sleep(3); // 子进程等待 3s
exit(0); // 子进程退出
} else { // 父进程
g_i4event = 1; // 将 g_i4event 置为 1
sleep(1); // 父进程等待一秒
g_i4event = 2; // 将 g_i4event 置为 2
waitpid(pid, &status, 0); // 等待子进程退出并获取子进程的退出状态
g_i4event = 3; // 将 g_i4event 置为 3
return 0;
}
}
```
阅读全文