linux wait(NULL);是什么意思,举例一下
时间: 2024-05-11 18:13:53 浏览: 138
在Linux中,wait(NULL)是一个系统调用,用于等待任何一个子进程的结束并获取其退出状态。
当一个父进程创建一个子进程时,子进程会在父进程的地址空间中复制一份自己的代码和数据。在子进程执行完自己的任务后,它会通过exit()系统调用来结束自己的执行,并返回一个状态码给父进程。
父进程可以通过wait(NULL)系统调用来等待子进程的结束,这样父进程就可以获取到子进程的退出状态码。如果子进程已经结束,wait(NULL)会立即返回,否则父进程会被阻塞,直到子进程结束。
下面是一个简单的例子,演示了父进程如何等待子进程的结束并获取其退出状态:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork(); // 创建子进程
if (pid == 0) { // 子进程
printf("Child process is running\n");
exit(0); // 结束子进程
} else if (pid > 0) { // 父进程
printf("Parent process is waiting for child\n");
wait(NULL); // 等待子进程结束
printf("Child process has ended\n");
} else { // fork失败
printf("Failed to create child process\n");
return 1;
}
return 0;
}
```
运行这个程序,输出如下:
```
Parent process is waiting for child
Child process is running
Child process has ended
```
可以看到,父进程等待子进程结束后,输出了一条消息。
阅读全文