waitpid WNOHANG
时间: 2023-09-29 13:09:17 浏览: 49
`waitpid` 是一个系统调用函数,用于等待一个特定的子进程结束或者检查子进程的状态。`WNOHANG` 是一个标记,用于告诉 `waitpid` 在子进程没有结束时不要阻塞,而是立即返回。
当使用 `WNOHANG` 标记时,`waitpid` 函数会立即返回,如果没有子进程结束,返回值为0;如果有子进程结束,返回值为结束的子进程的PID。这样就可以非阻塞地获取子进程的结束状态,而不需要等待子进程结束。
使用 `WNOHANG` 可以方便地实现并发处理多个子进程,而不需要阻塞主进程等待每个子进程的结束。
相关问题
waitpid函数返回值
waitpid函数返回值可以分为以下几种情况:
1. 如果waitpid调用成功且等待的子进程已经结束,返回子进程的进程号。
2. 如果waitpid调用成功,但是等待的子进程还没有结束,且设置了WNOHANG选项,返回0。
3. 如果waitpid调用成功,但是等待的子进程还没有结束,且没有设置WNOHANG选项,则waitpid函数会一直阻塞等待,直到有子进程结束,返回子进程的进程号。
4. 如果waitpid调用失败,返回-1,并且设置errno变量表示错误类型。
waitpid的用法
waitpid() 是一个系统调用函数,用于等待一个特定的子进程结束或者停止,并返回该子进程的状态。
下面是 waitpid() 函数的原型:
```
#include <sys/wait.h>
pid_t waitpid(pid_t pid, int *status, int options);
```
其中,pid 参数指定要等待的子进程 ID。如果 pid 的值为 -1,那么 waitpid() 函数将等待任何一个子进程结束。如果 pid 的值大于 0,则等待该进程 ID 的子进程结束。如果 pid 的值为 0,则等待与调用进程在同一个进程组中的任何子进程结束。如果 pid 的值小于 -1,则等待进程组 ID 等于该值的任何子进程结束。
status 参数是一个整数指针,用于存储子进程的退出状态。如果不关心子进程的退出状态,则可以将 status 设置为 NULL。
options 参数指定了一些附加选项,例如 WNOHANG 表示在没有子进程结束时立即返回,而不是一直等待。
waitpid() 函数的返回值表示已经结束的子进程的进程 ID。如果没有任何子进程结束,那么 waitpid() 的返回值为 0。如果出现错误,waitpid() 的返回值为 -1,并且 errno 变量会被设置为相应的错误代码。