wait(NULL)放在父进程的开始处会有什么不好的问题?用具体代码例子说明
时间: 2023-06-12 18:02:18 浏览: 63
深入探讨:unix多进程编程之wait()与waitpid()函数
在父进程开始处调用 wait(NULL) 会阻塞父进程,等待它所有子进程结束后才能继续执行。这可能会导致父进程在等待子进程时出现死锁,从而影响整个程序的运行效率。
下面是一个简单的 C 语言代码示例,演示了在父进程开始处调用 wait(NULL) 的情况:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork failed\n");
exit(EXIT_FAILURE);
} else if (pid == 0) {
// Child process
printf("This is child process\n");
exit(EXIT_SUCCESS);
} else {
// Parent process
wait(NULL); // 等待子进程结束
printf("This is parent process\n");
exit(EXIT_SUCCESS);
}
}
```
在上面的代码中,父进程会调用 wait(NULL) 等待它所创建的子进程结束。如果子进程运行时间很长,父进程将会一直处于等待状态,直到子进程执行完毕为止。
因此,我们通常将 wait(NULL) 放在父进程的结尾处,以便在父进程执行完所有其他操作后再等待子进程结束。
阅读全文