use*_*666 3 c# command-line process
如何在C#代码中检查进程是否执行成功?下面是我用来检查的代码。检查p.ExitCode = 0是否成功执行就足够了吗?如果是这样,那么如果我收到任何错误(即),如何获取错误的描述ExitCode <> 0?
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c " + command);
psi.RedirectStandardOutput = false;
psi.RedirectStandardError = false;
psi.UseShellExecute = true;
psi.CreateNoWindow = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.WaitForExit();
MessageBox.Show("Error Code:" + p.ExitCode);
进程退出代码的含义由进程定义。进程可能会失败,但仍返回零错误代码。进程可能会成功并返回非零错误代码。尽管这两种可能性显然违反惯例。
因此,为了解释错误代码,您需要查阅正在执行的进程的文档。通常该文档是不存在的,有时最方便的方法是读取标准输出和/或标准错误流并解析该文本以查找错误消息。
就其价值而言,您的代码似乎不必要地复杂,并且您不应该设置UseShellExecute在true这里。像这样的代码看起来会更干净:
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c " + command);
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
Process process = Process.Start(psi);
process.WaitForExit();