两个函数的原型如下:
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
可以通过status获取子进程的退出状态,如果不关心,可以将status置为NULL
对于waitpid函数,pid参数可以设置为以下任意值:
<-1 回收进程组id等于pid绝对值的任意子进程
-1 回收任意的子进程
0 回收进程组id等于调用进程的任意进程
>0 回收等于pid的子进程
options参数可以设置为以下值:
WNOHANG
WUNTRACED
WCONTINUED
函数成功调用返回进程id,如果失败返回0或者-1
wait和waitpid的区别有以下几点:
1、wait会使调用者阻塞,即父进程会阻塞在wait调用上。而waitpid可选非阻塞方式。
2、当有子进程结束时,wait调用就返回。如果父进程产生了多个子进程,如果使用wait意味着父进程无法指定具体回收某一个子进程。waitpid参数中,可以指定回收某一个特定的子进程。
本文详细解析了wait和waitpid函数的使用方法及区别,包括如何通过status参数获取子进程的退出状态,waitpid函数的pid参数设置,以及options参数的作用。同时,对比了wait与waitpid在阻塞模式和指定回收子进程方面的不同。
1702

被折叠的 条评论
为什么被折叠?



