Win32 API模拟发送/捕获SIGTERM

Art*_*yom 12 windows winapi posix shutdown sigterm

在POSIX OS下,有一个信号API,它允许发送一个信号进行处理以使用kill来关闭它,你可以用sigaction捕获它并做你需要的事情;

但是,Win32不是POSIX系统,因此:

  • 如何处理可能出现的关闭事件,例如"任务管理器"中的"结束进程"?
  • 将关闭信号发送到Win32应用程序的标准API是什么?

我不是在谈论GUI,我在谈论应该很好地关闭的TCP/IP服务器.这不像Windows服务那样运行.

Chr*_*her 7

您会WM_QUIT在第一个创建的线程上收到一条消息。

如果您不处理该问题,您的进程将被强制关闭。

因此,只需在第一个线程中实现一个消息队列,它会查找WM_QUIT消息

  • 您应该处理 WM_CLOSE。“WM_QUIT 消息与窗口无关,因此永远不会通过窗口的窗口过程接收。它只能由 GetMessage 或 PeekMessage 函数检索。” -MSDN (3认同)

Kb.*_*Kb. 5

MSDN的《Unix代码迁移指南》有一章介绍了Win32代码转换和信号处理
尽管Microsoft已决定将这个出色的指南存档,但是它非常有用。

描述了三种方法:本
机信号
事件对象
消息