我应该使用什么信号来终止/终止Windows上的应用程序
What signals should I use to terminate/kill applications on Windows?
对于POSIX环境,这很容易。SIGTERM
、SIGINT
、SIGQUIT
、SIGKILL
、SIGHUP
等
但我正在用D编写一个应用程序,它需要根据用户输入管理打开的应用程序,并发送用户请求的信号。我需要知道这些信号在Windows中的等价物,以及它们的值。最重要的是什么?我在这里找到了相关文档,但它不如POSIX文档全面。
我将使用D标准库文档中的std.process.kill(Pid pid, int codeOrSignal)
,但我不知道需要发送什么信号。
谢谢!
编辑:正如评论中所讨论的,我已经标记了C++和D,因为这两种语言的答案都很有用。这两种语言是交叉兼容的,并且很容易在彼此之间移植。
Windows没有信号。如果您确实想终止应用程序,请调用TerminateProcess
。这可能会导致它损坏正在写入的任何文件。
如果导致损坏不是您的目标,那么您可以通过GenerateConsoleCtrlEvent
关闭控制台应用程序,并且可以通过发布窗口WM_close消息来关闭GUI应用程序。
一些应用程序通过显示提示用户保存文件的模式对话框来响应WM_CLOSE,因此您可能需要在进程句柄上超时,如果超时时间过长,则只需调用TerminateProcess。
如前所述,除非您的应用程序参与实际启动控制台应用程序,否则您无法真正满足调用GenerateConsoleCtrlEvent
的要求,这很不幸。即使连接到可以处理WM_CLOSE事件的控制台窗口,除非这是发送ctrl事件的秘密方式,否则控制台应用程序本身将无法响应WM_CLOSE消息来正确清理,所以你只需要抱着最好的希望,使用TerminateProcess
。
文件:CCD_ 11,CCD_ 12,WM_CLOSE
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- 我应该使用什么信号来终止/终止Windows上的应用程序
- Windows 脚本主机在关闭创建的窗口时终止
- Windows资源监视器使用哪些Win32函数来检测已终止进程的磁盘和网络活动
- C++:监视 Windows 中的进程创建和终止
- 我怎么能知道一个进程是什么时候创建的,并阻止它在windows中执行或终止它
- 如何在Windows线程中终止线程后获取剩余线程数?C++
- 使用 Windows 版C++加速终止套接字 WinHttp API 的方法
- 终止Qt进程:Windows任务管理器在做什么,我没有?
- 在Windows下,线程的创建和终止需要多长时间
- Qt 5.5.0 在 Windows 上使用 mingw:编译的可执行文件无法终止
- WinAPI - windows关闭前的清理终止进程
- 分配空终止符时Windows剪贴板函数崩溃
- c++在Windows API中单独创建线程,程序终止
- 连接和终止windows线程
- Windows服务在Windows7中意外终止
- 当一个c++程序在Windows上终止时,终止存根调用的最后一个函数是什么?