【问题标题】:Trying to get StandardOutput after running a console process运行控制台进程后尝试获取 StandardOutput
【发布时间】:2013-08-14 04:32:18
【问题描述】:

我可以使用以下 C# 代码运行控制台进程。目标也是收集此类过程的所有输出:

System.Diagnostics.Process proc = new System.Diagnostics.Process();

proc.StartInfo.Arguments = commandLine;
proc.StartInfo.FileName = "signtool.exe";
proc.StartInfo.RedirectStandardOutput = true;

proc.StartInfo.UseShellExecute = false;

proc.Start();

if (proc.WaitForExit(10000))
{
    Debug.WriteLine(proc.StandardOutput.ReadToEnd());
}

我收到的是这样的:

“完成添加附加商店\r\n”

但是当我从 Windows 命令行执行相同操作时,我会得到:

Done Adding Additional Store
SignTool Error: File not found: C:\SomeBadFile.exe

为什么我的代码只得到第一行输出?

【问题讨论】:

    标签: c# .net console console-application


    【解决方案1】:

    如果您没有查看Process.StandardError Property ,则您缺少的行似乎是一条错误消息

    当进程将文本写入其标准错误流时,该文本是 通常显示在控制台上。通过重定向 StandardError 流,您可以操纵或抑制进程的错误输出。 例如,您可以过滤文本、设置不同的格式或编写 输出到控制台和指定的日志文件。

    【讨论】:

    • 糟糕。你是对的。我完全忘记了StandardError。是的,它就在那里......
    【解决方案2】:

    您是否也尝试过重定向和观看 StandardError?这似乎是输出到错误流。

    【讨论】:

    • 也谢谢。它在 StandardError 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多