【发布时间】:2016-08-14 12:25:00
【问题描述】:
我正在寻找一种在 C++ 中以跨平台方式对进程进行基本管理的方法,但我不能使用外部库(如 boost::process)。 场景是这样的 - 我正在使用 std::system 调用子进程, 现在,如果父进程被信号中断,我需要在退出之前杀死子进程,以避免将其作为僵尸。 我已经阅读了信号处理,但我不确定如何在句柄函数中终止使用 std::system 创建的进程。 还有其他/更好的方法吗?
【问题讨论】:
-
如果父母死了,孩子会变成孤儿,而不是僵尸。僵尸是没有收割的死去的孩子。
-
解决方案取决于系统。根据您的描述,您似乎使用的是 unix(例如 linux、BSD 等)或类似设备。是POSIX吗?如果是这样,您将拥有一组与平台相关的功能,可用于查找/杀死进程(尽管 posix 的某些方面被松散地指定,因此实现因系统而异)。如果您有多种目标系统(例如 posix 和非 posix),您肯定需要针对不同目标的不同解决方案。除了使用第三方库之外,标准 C++ 中没有其他解决方案(这些库又负责处理平台依赖关系)
标签: c++