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

C# 如何获取进程的错误代码及其描述,c#,command-line,process,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.UseShe

如何在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);

psi.StandardError.ReadtoEnd()
应该以字符串形式获取错误代码


一个捕获是
psi.UseShellExecute=false
。希望这有帮助。

流程退出代码的含义由流程定义。进程可能会失败,但仍然返回零错误代码。进程可能会成功并返回非零错误代码。尽管这两种可能性显然违背了惯例

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

值得一提的是,您的代码似乎不必要地复杂,您不应该在此处将
UseShellExecute
设置为
true
。这样的代码看起来更干净:

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

我需要在命令行中运行SFTP命令。下面的链接告诉0成功执行。这些是协议响应代码,而不是过程错误代码。使用sftp库比使用外部进程要好得多。你能给我一些参考网站来了解sftp库吗?只需搜索一下c#sftp