我正在使用WinAPI在c ++中编写一个控制台多进程应用程序。所以我有Dispatcher(例如“Parent”)和Client(例如“Child”)进程。两个进程都是同步的:它们使用信号量,事件,互斥体和管道(所有这些都是标准的WinAPI句柄)。当用户键入"exit"
命令时,应用程序停止。如果用户这样做,调度程序进程会通知它的子进程,然后子进程释放其资源并使另一个退出前程序正确退出。但是有一件事困扰着我:如果用户按下“关闭”按钮,会发生什么?如果是这样,我应该听关闭事件,然后执行我的资源释放程序。处理窗口关闭事件的最简单方法是什么?
答案 0 :(得分:3)
编写一个检测CTRL_CLOSE_EVENT(和CTRL_C_EVENT,如果需要)的console handler routine,并使用SetConsoleCtrlHandler将处理程序例程添加到您的流程中。
答案 1 :(得分:1)
与通过任务管理器崩溃或终止的客户端进程没有什么不同。你也应该对此有弹性。您在父进程中获得的最终信号是将发出客户端进程句柄的信号。
使用WaitForMultipleObjects以及其他句柄来检测它。