为什么“cmd /C”完成其工作后仍然存在?

为什么“cmd /C”完成其工作后仍然存在?

我的问题是为什么在我更新我的 exe 之后“cmd”在我的进程中存在(空闲)?

在我的代码中我运行此代码来更新自己并启动

var args = string.Format(@"/C ping 1.1.1.1 -n 1 -w 3000 & move /Y ""{0}"" ""{1}"" & ""{1}"" {2}", updateFn, fn, exeargs);
new Process() { StartInfo = new ProcessStartInfo(@"cmd", args) { CreateNoWindow = true, UseShellExecute = false } }.Start();
Environment.Exit(0);

我的想法是立即退出,让 ping 暂停 3 秒,然后再尝试用更新后的 exe 替换当前的 exe。然后我使用必要的参数启动

cmd 的完整参数如下所示

/C ping 1.1.1.1 -n 1 -w 3000 并移动 /Y “c:\path\update” “c:\path\my.exe” 和 “c:\path\my.exe” exeargs

一切正常,但是当我的进程启动并正常运行后,我在任务管理器中看到 cmd(看起来处于空闲状态)。为什么?

答案1

您的论点的最后一部分是& "c:\path\my.exe" exeargs导致命令解释器等待my.exe运行完毕后再退出,显然my.exe它不是一个可以自行运行和存在的程序;它保持活跃状态​​。

您可以使用start my.exe命令解释器启动my.exe并继续运行,而无需等待它。

相关内容