在 Unix/Linux 操作系统中,wait
函数是一个系统调用,用于父进程等待其子进程结束并回收子进程的资源。其函数原型如下:
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *wstatus);
该函数接收一个 int
指针参数 wstatus
,用于获取子进程的退出状态。如果调用 wait
函数时当前进程并没有子进程或者已经没有子进程需要等待,则 wait
函数会立即返回 -1
并设置全局变量 errno
为 ECHILD
。
如果当前有子进程需要等待,则 wait
函数会阻塞当前进程,直到有一个子进程结束并被回收为止。回收子进程时,wait
函数会将子进程的 PID 值作为返回值返回,并将子进程的退出状态存储在 wstatus
参数中。如果 wstatus
参数为 NULL
,则 wait
函数会忽略子进程的退出状态。
在多进程编程中,父进程可以通过 fork
函数创建子进程,并在子进程中调用 exec
系列函数来运行其他程序。在这种情况下,父进程通常需要等待子进程运行结束,以便获取子进程的退出状态并进行相关的处理。这时就可以使用 wait
函数等待子进程的结束。