如果一个父进程有多个子进程,父进程通过wait系统调用来等待子进程,那父进程是怎么等待的?是只能等一个还是等所有子进程都结束了才继续执行?
还有个问题,如果父进程采用不阻塞的方式调用waitpid来等待某个子进程,那如果等子进程结束的时候,父进程已经执行到了waitpid语句之后了,那会怎么样,父进程还会去执行waitpid吗?
linux里面的父进程等待子进程问题
答案:2 悬赏:0
解决时间 2021-11-14 03:23
- 提问者网友:無奈小影
- 2021-11-13 22:37
最佳答案
- 二级知识专家网友:何以畏孤独
- 2021-11-13 22:46
父进程执行到wait的时候,会阻塞等待子进程的结束,一个wait函数只调用一次,如果只有一个wait,其他的子进程在父进程结束后会成为孤儿进程init进程收养。采用不阻塞方式调用waitpid的话,父进程不会等待,没执行完的子进程将会成为孤儿进程
全部回答
- 1楼网友:两不相欠
- 2021-11-14 00:15
1. 父进程只等待任何一个进程状态改变,wait就会立即返回.并携带状态改变的子进程信息.如果需要等待所有进程结束,可以wait外面套循环.
2. 如果子进程结束后父进程才调用wait/waitpid则不会接收到信息.子进程将变成僵尸进程.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯