gpt4 book ai didi

c++ - 在 linux 中如何保证子进程在父进程退出之前被杀死?

转载 作者:太空狗 更新时间:2023-10-29 22:59:46 27 4
gpt4 key购买 nike

我在流式实时数据方面做了很多工作,我发现用于将我的系统的不同部分彼此隔离的过程模型非常有效。在程序的生命周期中,能够以流方式打开子进程并从中读取数据通常非常方便/简洁。但是,如果子进程在父进程结束之前没有正确地等待(),您很容易就会变成僵尸或孤儿。

我正在寻找的基本上是在正确清理子进程时获得 RAII 式保证所需的条件。理想情况下,不考虑父级退出的方式,无论是响应信号、调用 exit()、抛出异常等等。知道我永远不会生成僵尸或孤立进程,我想高枕无忧。

最佳答案

在您的代码中,当您知道 child pid 时,可能作为调用 fork() 的返回值,代码可以等待 child 通过:

waitpid( pid, &status, 0);

如果父进程确实对该状态感兴趣,则可以在其后进行适当的宏调用以从子进程中提取返回的状态。

注意:不等待子进程死亡会导致创建僵尸进程。一般需要重启才能消除

关于c++ - 在 linux 中如何保证子进程在父进程退出之前被杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001788/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com