关于两次fork的一个问题
本帖最后由 loopong 于 2013-07-07 10:55 编辑最近看到有不少地方调用两次fork函数,fork之后,再调用一次fork,这样就有父,子,孙子三个进程,父进程再调用exit退出,孙子进程就被init接管了,实际上与最初的父进程脱离了关系,就不会僵死了。
这里有个问题,那就是孙子进程被init接管了,但子进程没有,子进程不是就变成僵尸进程了吗,搞来搞去,还是产生了一个僵尸进程。 那不是万能解决方案啊,孙子进程睡了2秒,保证中间进程先退出。 fork两次不是因为僵死啊
是为了成为守护进程啊.......... 子进程退出了,才有孙子被init接管这一说,子进程怎么会成为僵死? 本帖最后由 _lele 于 2013-07-30 08:37 编辑
父进程退出了,但子进程不会立刻成为僵尸进程的吧,只有在孙子进程退出了,且子进程也要退出之后子进程可能会成为僵尸进程的吧?但这里的情况应该是父进程退出了,同一命名空间的init进程应该会成为子进程的父进程的。。。。僵尸进程怎么产生的。?必须满足两个条件,1:进程被另一个进程或被用户杀死,2:父进程在子进程终止时没有调用wait4系统调用。所以你说的情况不会让子进程成为僵尸进程。你这里的子进程在父进程退出前没有退出,应该是被其它进程接管了,但是不是init就不知道(应该是同一命名空间的init进程)。
页:
[1]