LINUX里,父进程退出了,子进程一定会退出吗?
8个回答
展开全部
不会,父进程退出后,子进程成为孤儿进程被init进程收养。如果需要用父进程回收子进程,就要在父进程里使用waitpid,这个函数会让父进程阻塞,直到子进程执行完成。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不。
若父进程退出,子进程尚未结束,则子进程会被init进程领养,也就是说init进程将成为该子进程的父进程。
若希望父进程退出,子进程也退出的话,可以使用线程,因为若进程结束,则还没结束的线程一定会立刻结束。或者如楼上所说,用信号,用atexit注册一个退出时执行的函数,这个函数中发送信号给子进程即可。
若父进程退出,子进程尚未结束,则子进程会被init进程领养,也就是说init进程将成为该子进程的父进程。
若希望父进程退出,子进程也退出的话,可以使用线程,因为若进程结束,则还没结束的线程一定会立刻结束。或者如楼上所说,用信号,用atexit注册一个退出时执行的函数,这个函数中发送信号给子进程即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
子进程被父进程fork之后,父进程先比子进程死亡,子进程的ppid变成祖宗级别的id可能是0进程init进程,子进程被称为“孤儿进程”父进程死亡,被领养。
子进程死亡,父进程回收。父进程在未回收接受,子进程又叫“僵尸进程”没有人收尸。
还有我也疑惑的是是:随着终端关闭,终端运行的程序都会死掉,而不是迁移id到init进程,难道是这是异常终止,而不是正常退出?避免这种情况,就是靠变为守护进程了
子进程死亡,父进程回收。父进程在未回收接受,子进程又叫“僵尸进程”没有人收尸。
还有我也疑惑的是是:随着终端关闭,终端运行的程序都会死掉,而不是迁移id到init进程,难道是这是异常终止,而不是正常退出?避免这种情况,就是靠变为守护进程了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
理论上可以用信号。但是,没办法做到子进程退出同一时间父进程退出。必须父进程有调用检测。
参考资料: 百度一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询