我想从我的应用程序中生成一个子进程,以便它们的生命周期被绑定,即当我的应用程序关闭时,子进程也被关闭。为了达到同样的目的,我使用了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);
有什么想法吗?