我试图比process.Kill(true)
方法更优雅地关闭进程。
我有一个控制台应用程序,在那里我开始启动另一个进程";myProcess";(这不是我有源代码的应用程序(,我希望能够关闭它,就像在控制台中按下ctrl+c
一样。"myProcess";基本上是以固定间隔对接收器进行ping。
当我使用CCD_ 3关闭它时;myProcess";优雅地关闭;我现在离线了"向接收方发出请求。然而,当我使用kill(true)
关闭它时,它无法发送脱机请求,接收器停止接收ping,但不会将其标记为联机。
注意,我既不能控制myProcess的源,也不能控制接收器,所以我不能改变其中的任何行为。
我尝试过使用waitForExit()
、waitForExit(0)
和kill()
,所有这些都只会停止调试会话,但myProcess仍在运行。
在搜索解决方案时,我遇到了建议这些方法的答案,并使用GenerateConsoleCtrlEvent
以编程方式发送ctrl+c
事件。然而,我的控制台应用程序无法识别该方法,而且我似乎找不到任何使用方法。我认为,因为答案相当古老,它不再是中的一个选项。NET 6。
有人知道如何优雅地关闭一个进程,枯萎一个繁殖的chilprocess,或者自我进程Process.GetCurrentProcess()
吗?
查找需要处理SIGTERMS的内容。
看看这个
您可以尝试使用CloseMainWindow,阅读文档,看看它是否适合您的用例。