linux里面的父进程等待子进程问题..

如果一个父进程有多个子进程,父进程通过wait系统调用来等待子进程,那父进程是怎么等待的?是只能等一个还是等所有子进程都结束了才继续执行?还有个问题,如果父进程采用不阻塞... 如果一个父进程有多个子进程,父进程通过wait系统调用来等待子进程,那父进程是怎么等待的?是只能等一个还是等所有子进程都结束了才继续执行?
还有个问题,如果父进程采用不阻塞的方式调用waitpid来等待某个子进程,那如果等子进程结束的时候,父进程已经执行到了waitpid语句之后了,那会怎么样,父进程还会去执行waitpid吗?
展开
 我来答
ExcaliburZ
2012-09-18 · TA获得超过1102个赞
知道小有建树答主
回答量:750
采纳率:0%
帮助的人:804万
展开全部
  1. 父进程只等待任何一个进程状态改变,wait就会立即返回.并携带状态改变的子进程信息.如果需要等待所有进程结束,可以wait外面套循环.

  2. 如果子进程结束后父进程才调用wait/waitpid则不会接收到信息.子进程将变成僵尸进程.

追问
谢谢你的回答。再请教个问题哈~
如果子进程去执行exec了,那父进程还需要去wait吗?
追答
要的. 
否则子进程运行结束后变僵尸进程
另外补充一个就是,就算子进程已经僵尸了,父进程再wait一样可以为子进程"收尸".
大规模多进程编程的话,可以在父进程设置信号专门来干收尸工作.

参考资料: man 2 wait

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式