如何获取错误代码及其对进程的描述

时间:2014-09-19 06:43:13

标签: 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);

2 个答案:

答案 0 :(得分:1)

流程退出代码的含义由流程定义。进程可能会失败,仍然会返回零错误代码。进程可能会成功并返回非零错误代码。虽然这两种可能性显然不符合惯例。

因此,为了解释错误代码,您需要查阅正在执行的进程的文档。通常该文档不存在,有时最方便的方法是读取标准输出和/或标准错误流并解析该文本以查找错误消息。

对于它的价值,您的代码看起来似乎很复杂,您不应该在此UseShellExecute设置true。像这样的代码似乎更干净:

ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c " + command);
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
Process process = Process.Start(psi);
process.WaitForExit();

答案 1 :(得分:0)

psi.StandardError.ReadtoEnd()应该将错误代码作为字符串。

一个问题是psi.UseShellExecute = false。希望这会有所帮助。