gpt4 book ai didi

c++ - 在 C++ 跨平台中启动和终止进程

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

我正在寻找一种在 C++ 中以跨平台方式对进程进行基本管理的方法,但我无法使用外部库(如 boost::process)。场景是这样的——我用 std::system 调用一个子进程,现在,如果父进程被信号中断,我需要在退出前杀死子进程,以避免将其留作僵尸。我已经阅读了有关信号处理的内容,但我不确定如何终止在 handle 函数中使用 std::system 创建的进程。有没有其他/更好的方法来做到这一点?

最佳答案

C++ 最近有了线程语义,但它(还没有?)没有进程语义。因此,它不提供任何工具来终止系统上运行的进程。

因此,唯一可行的方法是让父进程向子进程发送某种信号,并让子进程在收到信号后自行终止。有多种发送信号的方法(例如,通过操作系统信号、通过标准 IPC 原语、通过网络),但标准 C++ 并未为其中的大多数方法提供任何可移植机制。因此,您最终会选择使用外部库(例如 Boost、Qt 等)或将您的实现限制在一组受支持的系统(例如 POSIX 操作系统,在这种情况下您甚至可以直接调用 杀死).

关于c++ - 在 C++ 跨平台中启动和终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767273/

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