linux里面的父进程等待子进程问题..
如果一个父进程有多个子进程,父进程通过wait系统调用来等待子进程,那父进程是怎么等待的?是只能等一个还是等所有子进程都结束了才继续执行?还有个问题,如果父进程采用不阻塞...
如果一个父进程有多个子进程,父进程通过wait系统调用来等待子进程,那父进程是怎么等待的?是只能等一个还是等所有子进程都结束了才继续执行?
还有个问题,如果父进程采用不阻塞的方式调用waitpid来等待某个子进程,那如果等子进程结束的时候,父进程已经执行到了waitpid语句之后了,那会怎么样,父进程还会去执行waitpid吗? 展开
还有个问题,如果父进程采用不阻塞的方式调用waitpid来等待某个子进程,那如果等子进程结束的时候,父进程已经执行到了waitpid语句之后了,那会怎么样,父进程还会去执行waitpid吗? 展开
1个回答
展开全部
父进程只等待任何一个进程状态改变,wait就会立即返回.并携带状态改变的子进程信息.如果需要等待所有进程结束,可以wait外面套循环.
如果子进程结束后父进程才调用wait/waitpid则不会接收到信息.子进程将变成僵尸进程.
追问
谢谢你的回答。再请教个问题哈~
如果子进程去执行exec了,那父进程还需要去wait吗?
追答
要的.
否则子进程运行结束后变僵尸进程
另外补充一个就是,就算子进程已经僵尸了,父进程再wait一样可以为子进程"收尸".
大规模多进程编程的话,可以在父进程设置信号专门来干收尸工作.
参考资料: man 2 wait
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询