C# Process.RedirectStandardOutput不工作

C# Process.RedirectStandardOutput不工作,c#,process,output,C#,Process,Output,我在重定向应用程序的标准输出时遇到问题。这似乎是.NET中的某种错误 我正在运行,但即使启动的控制台有写入的输出,我也不会得到任何输出。此代码适用于任何其他控制台应用程序,但不适用于此应用程序 void StartProcess() { var process = new Process(); process.StartInfo.FileName = @"live555ProxyServer.exe"; process.StartInfo.Arguments = "-R"

我在重定向应用程序的标准输出时遇到问题。这似乎是.NET中的某种错误

我正在运行,但即使启动的控制台有写入的输出,我也不会得到任何输出。此代码适用于任何其他控制台应用程序,但不适用于此应用程序

void StartProcess()
{
    var process = new Process();
    process.StartInfo.FileName = @"live555ProxyServer.exe";
    process.StartInfo.Arguments = "-R";
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.OutputDataReceived += process_OutputDataReceived;

    process.Start();
    process.BeginOutputReadLine();
}

void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Debug.WriteLine(e.Data);
}

可以找到该应用程序的源代码

,这是因为所有输出都转到
stderr
,而不是
stdout
,请参阅


您应该为和调用添加一个处理程序,事情就会开始顺利进行。

您是否检查过该过程是否确实开始了?process.Start()返回一个布尔值,如果进程启动,该值应该为真。是的,它确实启动了。您可以看到该进程,并且您也可以看到它在控制台中写入了输出。非常感谢您指出这一点。现在的问题是ErrorDataReceived只有在我关闭应用程序后才会被激发。您知道为什么会发生这种情况吗?可能是因为缺少换行符:您可以更改代码并添加
fprintf(stderr,“\n”)
fflush(stderr)fprintf
呼叫后,code>都会出现。奇怪的是,他们说
stderr
是无缓冲的,这似乎不是这里的情况。