【问题标题】:Capturing STDOUT of a process in C#在 C# 中捕获进程的 STDOUT
【发布时间】:2014-02-02 19:47:56
【问题描述】:

我在我的软件中使用了 2 个不同的进程。在这两种情况下,我都会阅读流程输出并给用户一些关于它的指示。

ProcessStartInfo si = new ProcessStartInfo();

si.WindowStyle = ProcessWindowStyle.Hidden;
si.UseShellExecute = false;
si.CreateNoWindow = true;
si.RedirectStandardError = true;
si.RedirectStandardOutput = true;

si.FileName = "proc.exe";
si.Arguments = "some args";

Process p = new Process();
p.StartInfo = si;
p.ErrorDataReceived += cmd_Error;
p.OutputDataReceived += cmd_DataReceived;
p.EnableRaisingEvents = true;

p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();

p.WaitForExit();

在第一种情况下,它完美无缺! 但在另一种情况下,该进程正在完成其工作,但只有终止事件被触发。 使用

运行时
si.WindowStyle = ProcessWindowStyle.Normal

我看到这个过程有一个输出。

可能是什么问题?为什么没有触发输出事件?

【问题讨论】:

  • 你是对的..我的意思是正常 - 已编辑

标签: c# .net command-line process stdout


【解决方案1】:

如果一个进程工作,但另一个没有,你确定另一个进程实际上正在写入标准输出吗?

快速测试可以确认。使用以下语法从命令行运行它;

myprocess.exe > output.txt

如果 output.txt 为空,则它没有写入标准输出,您的程序运行正常。

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2010-09-22
    • 2010-12-04
    相关资源
    最近更新 更多