阻塞进程函数 wait()和waitpid()

Posted 一线码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阻塞进程函数 wait()和waitpid()相关的知识,希望对你有一定的参考价值。

1.  wait()和waitpid()函数说明

wait()

进程一旦调用了wait(), 就立即阻塞自己,由wait自动分析是否有当前进程的某个子进程已经退出,如果让它找到了一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到一个子进程结束或者该进程接到了一个指定的信号为止。


waitpid()

waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程,它还有若干选项,如可提供一个非阻塞版本的wait()功能等。实际上wait()函数只是waitpid()函数的一个特例,在Linux内部实现wait()函数时直接调用的就是waitpid()函数。
wait()函数的实现:

static inline  pid_t  wait(int *wait_stat)  

{  

  return waitpid(-1,wait_stat,0);  

}  



2.  wait()和waitpid()函数格式说明

(1)  wait()函数格式如下:

技术分享图片

 

(2)   waitpid()函数格式如下

技术分享图片





以上是关于阻塞进程函数 wait()和waitpid()的主要内容,如果未能解决你的问题,请参考以下文章

详解wait和waitpid函数

wait函数与waitpid函数

wait和waitpid详解转

子进程的异步等待方式

进程——wait与waitpid僵尸进程与孤儿进程

linux c:子进程僵尸进程与wait/waitpid的实验