繁体   English   中英

Win32 API模拟发送/捕获SIGTERM

[英]Win32 API analog of sending/catching SIGTERM

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

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

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

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

MSDN Unix代码迁移指南有一章介绍Win32代码转换和信号处理
虽然微软决定存档这个精彩的指南,但它非常有用。

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

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

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

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

如果不处理,则强制关闭进程。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM