将控制台输出重定向到 C# 控制台C++不会打印任何内容

Redirection of C++ console output to C# console doesn't print anything

本文关键字:控制台 打印 任何内 输出 重定向 C++      更新时间:2023-10-16

我想将C++控制台的输出(printf(")语句)重定向到C#控制台。

以下是我得到的

        Process e = new Process();
        e.StartInfo.UseShellExecute = false;
        e.StartInfo.RedirectStandardOutput = true;
        e.StartInfo.FileName = "C:\Users\Projects\ot\x64\Debug\ot.exe";
        e.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
        e.Start();
        e.BeginOutputReadLine();

但我没有得到任何输出。C++控制台不打印任何东西(这意味着输出已经重定向),这些代码行也不是C#。

如何解决此问题?

谢谢,

尝试使用:

    Process e = new Process();
    e.StartInfo.UseShellExecute = false;
    e.StartInfo.RedirectStandardOutput = true;
    e.StartInfo.RedirectStandardError = true;
    e.StartInfo.FileName = "C:\Users\Projects\ot\x64\Debug\ot.exe";
    e.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
    e.ErrorDataReceived += (s, e) => Console.WriteLine(e.Data);
    e.Start();
    e.BeginOutputReadLine();
    e.BeginErrorReadLine();
    e.WaitForExit();
    e.CancelErrorRead();
    e.CancelOutputRead();

我已经建立了一个基类,可以用来包装流程类并帮助与其他流程交互。