无论是要使用wait还是waitpid都要先引入头文件
#include <sys/types.h>
#include <sys/wait.h>
waitpid:
pid_t waitpid(pid_t pid,int *statusp,int options)
参数:
pid:pid>0:只等待进程ID等于pid的进程,不管其他已经有多少子进程结束,只要指定的子 进程还没结束,waitpid就会一直等下去,直到相应进程结束。
pid=0:等待同一个进程组中的任何子进程,子进程如果加入了别的进程组,waitpid不会理睬它
pid=-1:等待任何子进程结束
pid<-1:等待指定进程组中的任何子进程,这个子进程组ID等于pid的绝对值
statusp:如果是一个空值,表示父进程不关心子进程的状态;如果不是空指针,则终止状态保存在statusp指向的单元
option:设置默认行为
WNOHANG:挂起调用进程,直到有子进程结束,返回值为零
WUNTRACED:挂起调用进程的执行,直到等待集合中的一个进程变成已终止或被停止。返回已终止的子进程ID
WCONTINUED:挂起调用进程的执行,直到一个正在运行的进程终止或收到SIGCONT信号
wait:
pid_t wait(int *statusp)
调用wait(&status)等价于调用waitpid(-1,&status,0)。相当于只要有子进程结束就返回
如果wait的参数是一个数字,用法与sleep相似