Boost.Process завершает дочерний процесс чисто

Я хотел порождать дочерний процесс из моего приложения так, чтобы его время жизни было связано, то есть когда мое приложение закрыто, дочерний процесс также закрывается. Чтобы добиться того же, я использовал 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);

Какие-нибудь мысли?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …