3

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

4

2 回答 2

3

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

于 2013-10-17T22:29:33.500 回答
1

它与客户端进程崩溃或通过任务管理器终止并没有真正的不同。你也应该对此有弹性。您在父进程中获得的最终信号是客户端的进程句柄将被发出信号。

使用 WaitForMultipleObjects 以及其他句柄来检测这一点。

于 2013-10-17T22:39:25.253 回答