C#停止进程由我自己的进程启动

时间:2020-02-13 11:52:00

标签: c# linux .net-core process debian


我为ARK Server创建了一个启动器,可以在其中轻松更改设置并启动。
我用这个启动服务器:

Process serverprocess = new Process();
serverprocess.StartInfo.FileName = Path.GetFileName(serverpath);
serverprocess.StartInfo.Arguments = launch;
serverprocess.StartInfo.UseShellExecute = false;
serverprocess.Start();
serverprocess.WaitForExit();

但是当我按CTRL + C时,它不会等到ARK Server停止后,它仍会在后台运行,而我的应用程序将被杀死。
我进行了一些测试,服务器接收到关闭信号并停止运行(这需要一些时间,尤其是在服务器未完全启动时)。但是当我的应用程序已经关闭时,如果需要花费一些时间来停止服务器,服务器仍然可以运行。
双击CTRL + C会杀死服务器,但是由于第一次按下已经使我退出控制台,因此我无法进行双击。

知道如何在仍然停止ARK服务器的同时如何防止我的应用程序关闭吗?
添加Console.TreatControlCAsInput = true;将使服务器甚至无法接收到信号。

谢谢!

2 个答案:

答案 0 :(得分:0)

我的测试还可以

Process proc = new Process();
proc.StartInfo.FileName =“ / bin / bash”; // sh
proc.StartInfo.Arguments =“ -c \”“ +命令+” && echo'OK'\“”;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true; proc.Start();

答案 1 :(得分:0)

您应该正确关闭程序才能正常关闭服务器。在这里,您去了:

.pyd
相关问题