Win32 API模拟发送/捕获SIGTERM

时间:2009-08-01 15:09:37

标签: windows winapi posix shutdown sigterm

在POSIX OS下,有信号API,允许发送信号进行处理以关闭它 有了杀戮,你可以用sigaction抓住它并做你需要的事情;

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

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

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

3 个答案:

答案 0 :(得分:4)

MSDN Unix代码迁移指南 有一章关于Win32 code conversion and signal handling
虽然微软已决定存档这篇精彩的指南,但它非常有用。

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

答案 1 :(得分:3)

来自MSDN的Windows电源管理可能会有所帮助。但它处理系统事件而不是每个进程。

对于某个流程,您可以使用WM_CLOSE检测终止。您需要处理Windows消息。如果它是一个控制台应用程序,则需要安装一个控制处理程序;在MSDN上查看SetConsoleCtrlHandler

答案 2 :(得分:2)

您在首次创建的帖子中收到WM_QUIT条消息。

当您不处理时,您的进程将被强行关闭。

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