gpt4 book ai didi

c++ - 希望线程在父级退出时不死 - linux

转载 作者:搜寻专家 更新时间:2023-10-31 00:02:50 25 4
gpt4 key购买 nike

我不想使用 fork(),因为它增加了一层我希望避免的 IPC 管理。我想使用 pthread。我已经看到用于克隆的 strace,但我不想在 clone() 的详细级别开始管理线程。

给它们起个名字:A=主线程,B=工作线程。

我希望 B 能够在 A 离开时收到来自 A 的信号。 A 可以为此注册一个 atexit()。

A 可能会从 abort() 或什至可能是 SIGSEGV 或其他终端信号消失。 B 的工作就是日志记录:A 和 B 共享一个容器,日志消息由 A 创建。如果 A 死了,我希望 B 完成日志记录然后退出。

现在,如果 A 退出,B 退出,我将丢失日志队列中剩余的所有内容。

所以我的问题是:有没有办法让 B 更有弹性一点,这样它就不会随 A 一起消失?

最佳答案

你似乎混淆了线程进程;按照您描述的方式,A 是进程,而不是线程。当调用 abort() 或遇到 SIGSEGV 并且 A 退出时,B(进程 A 中包含的线程)也会消失。没有办法解决这个问题,因为 B 与 A 有着千丝万缕的联系。如果您希望进程比 A 长寿,那么您必须使用 fork 并创建一个新进程。

现在,您绝对可以在一个进程中拥有多个线程,并且线程 B 可以比创建它的线程 A-prime 长寿——但两者都从属于包含它们的进程,并且不能长于它。

关于c++ - 希望线程在父级退出时不死 - linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7335025/

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