1

我想从我的应用程序中生成一个子进程,这样它们的生命周期就会绑定,即当我的应用程序关闭时,子进程也关闭。为了达到同样的效果,我使用了boost::process::child::terminate().

使用的问题terminate()是生成的子进程不知道它正在退出,因此无法采取必要的步骤来确保退出是干净的(关闭打开的文件句柄、释放资源等)。

在不使用进程间通信的情况下,有没有办法在子进程中检测到它正在被终止或以某种方式与子进程通信?

我尝试使用以下处理程序在子端捕获终止,但没有任何成功:

std::set_terminate(terminateHandler);
std::set_unexpected(unexpectedHandler);
SetUnhandledExceptionFilter(sehExceptionHandler);

_set_purecall_handler(pureCallHandler);
_set_new_handler(newMemoryExceptionHandler);
_set_invalid_parameter_handler(invalidParameterHandler);

_set_abort_behavior(_CALL_REPORTFAULT, _CALL_REPORTFAULT);

signal(SIGABRT, abortHandler);
signal(SIGINT, interruptionHandler);

signal(SIGTERM, terminationRequestHandler);

有什么想法吗?

4

0 回答 0