在POSIX操作系统下,有信号API可用于向进程发送信号以关闭它,可以使用kill发出信号并使用sigaction捕获它并执行所需操作;
然而,Win32不是POSIX系统,因此:
- 我该如何处理可能来自“任务管理器”中的“终止进程”等关闭事件?
- Win32应用程序接收关闭信号的标准API是什么?
我不是在谈论GUI,而是在谈论应该优雅关闭的TCP/IP服务器。它不是像Windows服务一样运行。
在你的第一个创建的线程上会收到一个WM_QUIT
消息。
如果你不处理它,你的进程将被强制关闭。
因此,在你的第一个线程中实现一个消息队列,查找WM_QUIT
消息即可。
WM_CLOSE
检测终止。您需要处理窗口消息。如果是控制台应用程序,您需要安装控制处理程序;请参阅MSDN上的SetConsoleCtrlHandler。