父进程结束,子进程是不是也会跟着挂掉

发布网友 发布时间:2022-04-20 12:33

我来回答

4个回答

热心网友 时间:2024-02-29 09:11

不。
若父进程退出,子进程尚未结束,则子进程会被init进程领养,也就是说init进程将成为该子进程的父进程。
若希望父进程退出,子进程也退出的话,可以使用线程,因为若进程结束,则还没结束的线程一定会立刻结束。或者如楼上所说,用信号,用atexit注册一个退出时执行的函数,这个函数中发送信号给子进程即可。

热心网友 时间:2024-02-29 09:12

不会,父进程退出后,子进程成为孤儿进程被init进程收养。如果需要用父进程回收子进程,就要在父进程里使用waitpid,这个函数会让父进程阻塞,直到子进程执行完成。

热心网友 时间:2024-02-29 09:13

子进程被父进程fork之后,父进程先比子进程死亡,子进程的ppid变成祖宗级别的id可能是0进程init进程,子进程被称为“孤儿进程”父进程死亡,被领养。
子进程死亡,父进程回收。父进程在未回收接受,子进程又叫“僵尸进程”没有人收尸。
还有我也疑惑的是是:随着终端关闭,终端运行的程序都会死掉,而不是迁移id到init进程,难道是这是异常终止,而不是正常退出?避免这种情况,就是靠变为守护进程了

热心网友 时间:2024-02-29 09:13

理论上可以用信号。但是,没办法做到子进程退出同一时间父进程退出。必须父进程有调用检测。

参考资料:百度一下

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com