c语言中waitpid函数
时间: 2023-07-02 22:17:45 浏览: 99
详解C语言中的wait()函数和waitpid()函数
waitpid函数是一个系统调用函数,用于等待指定的子进程退出,并返回子进程的状态。该函数的原型如下:
```c
#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid(pid_t pid, int *status, int options);
```
其中,pid表示要等待的子进程的进程ID,status指向一个整型变量,用于存储子进程的退出状态信息,options表示等待的选项,可以为0或者是一组位掩码。
如果pid为-1,则表示等待任意子进程退出,此时等价于wait函数;如果pid>0,则表示等待进程ID为pid的子进程退出;如果pid=0,则表示等待与当前进程的进程组ID相同的任意子进程退出;如果pid<-1,则表示等待进程组ID为pid绝对值的任意子进程退出。
调用waitpid函数后,如果没有子进程退出,则会一直阻塞等待,直到有子进程退出。如果子进程已经退出,waitpid函数立即返回。此时,status会被赋值为子进程的退出状态信息,options中的WEXITSTATUS宏可以用于获取子进程的退出状态码。
需要注意的是,waitpid函数只能等待与当前进程同一会话期间的子进程。如果要等待其他会话期间的子进程退出,则需要使用waitid函数或者使用信号机制来实现。
阅读全文