1

父母的工作完成后,孩子还活着吗?如果是这样,如果主进程完成,我怎么能杀了他?我使用了boost(boost process,boost asio)。如果可能的话,它应该是MacOsWindowsLinux的解决方案。

boost::asio::io_service ioservice;
namespace bp = boost::process;
bp::child c(args);
ioservice.run();
c.wait();
result = c.exit_code();
4

1 回答 1

0

它退出“之后”可能具有挑战性,但您可以在它退出之前(或“因为”它退出)轻松地做到这一点。例如,通过管道向每个孩子发送明确的消息以关闭。或者,在大多数操作系统上,您可以只向它们发送TERM信号。

您可以注册一个atexit处理程序来执行此操作,但我会保持简单,只需将此功能放在程序的自然退出点上即可。

另一方面,你可以让孩子定期检查他们父母的状态,如果它不见了就退出。

于 2020-03-31T13:08:40.147 回答