Win32 API analog of sending/catching SIGTERM

拟墨画扇 提交于 2019-12-28 04:23:11

问题


Under POSIX OS there is signal API that allows to send a signal to process to shut it down with kill and you can catch it with sigaction and do what you need;

However, Win32 is not POSIX system, so:

  • How can I handle shutdown events that may come, for example from "End Process" in "Task manager"?
  • What is the standard API for sending shutdown signal to Win32 application?

I'm not talking about GUI, I'm talking about TCP/IP server that should be nicely shutdown. that does not run like windows service.


回答1:


You get a WM_QUIT message on your first created thread.

When you don't handle that, your process is forcibly shutdown.

So just implement a message queue in your first thread, which looks for the WM_QUIT message




回答2:


MSDNs Unix Code Migration Guide has a chapter about Win32 code conversion and signal handling.
Although Microsoft has decided to archive this brilliant guide, it is very useful.

Three methods are described:
Native signals
Event objects
Messages




回答3:


May be Windows Power Management from MSDN would be helpful. But it deals with system events rather than per process.

For a process, you would be able to detect termination with WM_CLOSE. You would need to handle windows messages. If it's a console application you would need to install a control handler; take a look at SetConsoleCtrlHandler on MSDN



来源:https://stackoverflow.com/questions/1216788/win32-api-analog-of-sending-catching-sigterm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!