Всем доброго времени суток!
Столкнулся с проблемой, опишу
step-by-step:
- Создаю консольное (PARENT) приложение. В имплементации, оно создаёт несколько дочерних процессов.
- Дочерние процессы (CHILDs) пишут логи (как пример), как следствие, после завершения этих процессов, необходимо чтобы они почистили за собой эти файлы. Естественно, для удаления файлов есть специальные функции.
- После того, как MAIN процесс завершил работу, ему необходимо сообщить дочкам что нужно убрать за собой, после чего, их можно терминировать.
Собственно проблема в том, что у меня не получает реализовать корректное завершение главного процесса со всеми дочками. Как я понял,
SetConsoleCtrlHandler и
GenerateConsoleCtrlEvent могут помочь в этом, посредством генеации
CTRL_BREAK_EVENT из
MAIN для дочек.
Если у кого-то есть рабочий пример, прошу поделиться.
Если можете предложить альтернативные варианты, готов выслушать.
Спасибо!
P.S.: На всякий случай прикладываю свой код (не очень чистый, т.к. использовал для дебага).
Краткое описание, в нём я содаю такое дерево процессов:
ROOT
----|___Parent
--------|____Child
В
Child процессе задаю
handler для обработки сигнала/сообщения от родителя.
После запуска, жмём
Any key для создания
Parent.
Затем в P
arent окне жмём
Any key для создания
Child процесса.
Затем жмём в
Parent окне ещё раз
Any key для генерации сигнала для
Child-
а.
Видим что
handler в
Child процессе не отработал.
Ссылка на код (
pastbin):