改写程序,在子程序中用函数system启动一个较长时间运行的任务,而在父进程中执行完成任务后,应用waitpid函数等待子进程,子进程退出后父进程才退出。
时间: 2024-03-15 21:47:32 浏览: 65
以下是改写后的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int pid, status;
pid = fork();
if (pid == -1) {
printf("Fork failed!");
exit(1);
} else if (pid == 0) {
// Child process
system("long_running_task");
exit(0);
} else {
// Parent process
waitpid(pid, &status, 0);
printf("Child process exited with status: %d\n", status);
}
return 0;
}
```
在子进程中,我们使用了`system`函数来执行一个较长时间的任务。在父进程中,我们使用了`waitpid`函数来等待子进程的结束,并获取其退出状态。这样,子进程结束后,父进程才会退出。
阅读全文