为什么`cmd / C`做完工作后还活着?


1

我的问题是,更新我的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的完整arg看起来像这样

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

一切正常,但是启动进程并正常工作后,我在taskmanager中看到了cmd(看起来很空闲)。为什么?

Answers:


3

参数的最后一部分是& "c:\path\my.exe" exeargs导致命令解释器my.exe在退出之前等待完成运行,并且显然my.exe不是一个自行运行并存在的程序。它保持活跃。

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


哦,是... durr> _ <
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.