关闭,如同输入ctrl+c一样



我试图比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,阅读文档,看看它是否适合您的用例。

最新更新