在控制台应用程序中处理WinAPI中的窗口closures事件最简单的方法是什么?

我正在编写一个控制台多进程应用程序在c + +中使用WinAPI。 所以我有调度员(例如“父母”)和客户(例如“孩子”)的过程。 两个进程都是同步的:它们使用的是信号,事件,互斥和pipe道(它们都是标准的WinAPI句柄)。 当用户input"exit"命令时,应用程序停止。 如果用户这样做,调度程序通知它的孩子,然后孩子释放其资源,并使另一个退出前程序正确退出。 但有一件让我困扰的事情:如果用户按下窗口“closures”button会发生什么? 如果是这样,我应该听密切事件,然后执行我的资源释放程序。 处理窗户closures事件最简单的方法是什么?

编写一个检测CTRL_CLOSE_EVENT(和CTRL_C_EVENT,如果需要)的控制台处理程序例程 ,并使用SetConsoleCtrlHandler将处理程序例程添加到您的进程中。

这与客户端进程崩溃或被任务管理器终止并没有什么不同。 你也应该有弹性。 您在父进程中获得的最终信号是客户端的进程句柄将被标记。

使用WaitForMultipleObjects和其他句柄来检测这个。