发送/捕获SIGTERM的Win32 API模拟

在POSIX操作系统下有一个信号API,它允许发送一个信号来处理closureskill,你可以用sigaction来捕获它并做你需要的;

但是,Win32不是POSIX系统,所以:

  • 我如何处理可能出现的closures事件,例如从“任务pipe理器”中的“结束进程”?
  • 发送关机信号到Win32应用程序的标准API是什么?

我不是在谈论GUI,我正在谈论TCP / IP服务器应该很好地closures。 这不像Windows服务运行。

Solutions Collecting From Web of "发送/捕获SIGTERM的Win32 API模拟"

你在第一个创建的线程上得到一个WM_QUIT消息。

当你不这样做,你的过程被强行关闭。

所以只需在第一个线程中实现一个消息队列,该消息队列查找WM_QUIT消息

MSDN Unix代码迁移指南有关于Win32代码转换和信号处理的章节。
虽然微软已经决定归档这个辉煌的指南,但它是非常有用的。

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

可能是从MSDN的 Windows电源管理将是有帮助的。 但它涉及系统事件而不是每个进程。

对于一个进程,您将能够使用WM_CLOSE检测终止。 你将需要处理Windows消息。 如果是控制台应用程序,则需要安装控制处理程序; 看一下MSDN上的SetConsoleCtrlHandler