wait( 和 waitpid( 的区别

    父进程可能比子进程早结束,如果父进程要阻塞以等待子进程,可以使用wait或waitpid函数,wait函数只是waitpid函数的简化版。

 

   #include <sys/wait.h>

   #pid_t wait (int * statloc); 

   #pid_t waitpid (pid_t pid, int * statloc, int optins);

 

   区别:

   在一个子进程终止前,wait使其调用者被阻塞,而waitpid有一个选项,可以使调用者阻塞或者不阻塞。

 

    对于waitpid函数中的pid参数的作用见下表:

 

pid == -1

等待任一子进程。

pid > 0

等待其进程ID与pid相等的子进程

pid == 0

等待其组ID等于调用进程组ID的任一的子进程

pid < -1

等待其组ID等于pid绝对值的任一的子进程

 

 

     对于waitpid函数中的options参数的作用见下表:

 

WCONTINUED

若实现支持作业控制,那么由pid指定的任一子进程在暂停后已经继续,但是状态没报告,则返回其状态

WNOHANG

若由pid指定的子进程并不是立即可用的,则waitpid不阻塞,此时返回值为0

WUNTRACED

若实现支持作业控制,那么由pid指定的任一子进程已经处于暂停状态并没报告过,则返回其状态

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注