对于POSIX环境,这很容易。 SIGTERM
,SIGINT
,SIGQUIT
,SIGKILL
,SIGHUP
等
但是我正在用D编写一个应用程序,该应用程序需要根据用户输入来管理打开的应用程序,并发送用户请求的信号。我需要了解这些Windows信号的等效项及其值。最重要的是什么?我找到了有关此here的文档,但是它不如POSIX文档全面。
我将使用D standard library documentation中的std.process.kill(Pid pid, int codeOrSignal)
,但我不知道需要发送什么信号。
谢谢!
编辑:正如评论中所讨论的那样,我已经标记了C ++和D,因为用任何一种语言回答都很有帮助。两种语言是交叉兼容的,彼此之间非常容易移植。
答案 0 :(得分:3)
Windows没有信号。
如果您确实想终止应用程序,请调用TerminateProcess
。这可能导致它损坏正在写入的任何文件。
如果引起损坏不是您的目标,则可以通过GenerateConsoleCtrlEvent
关闭控制台应用程序,并且可以通过发布其窗口(或多个窗口)WM_CLOSE消息来关闭GUI应用程序。
某些应用程序通过显示提示用户保存文件的模式对话框来响应WM_CLOSE,因此,您可能需要在进程句柄上设置超时,并且如果花费太长的时间就直接调用TerminateProcess。
如上所述,除非您的应用程序参与了实际启动控制台应用程序,否则您将无法真正满足调用GenerateConsoleCtrlEvent
的要求,这是不幸的。即使附加到可以处理WM_CLOSE事件的控制台窗口,除非这是发送ctrl事件的秘密方法,否则控制台应用程序本身也将无法响应WM_CLOSE消息以进行正确清理,因此您只需要希望最好并使用TerminateProcess
。