是否可以将子进程的stdout连接到c#中的父进程的stdout?

时间:2018-01-24 17:09:35

标签: c# .net console output

所以,我有以下代码:

var process = Process.Start(new ProcessStartInfo
{
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    CreateNoWindow = true,
    UseShellExecute = false,
    WorkingDirectory = Directory.GetCurrentDirectory(),
    FileName = ToolPath
});
var stdOutputString = process.StandardOutput.ReadToEnd();
var stdErrorString = process.StandardError.ReadToEnd();
process.WaitForExit();
if (stdOutputString.Length > 0)
{
    Console.WriteLine(stdOutputString);
}
if (stdErrorString.Length > 0)
{
    Console.Error.WriteLine(stdErrorString);
}
if (process.ExitCode != 0)
{
    throw new ToolException(process.ExitCode);
}

我对这段代码的问题是,子进程的stdout并没有真正连接到父进程的stdout。相反,它只在子进程结束时才可用。此外,子标准输出可以与其stderr交错,但是此代码首先输出所有子标准输出,然后输出所有标准输出。

我正在寻找类似设置管道的东西,该管道将直接在父母的控制台上输出孩子的stdout和stderr。

0 个答案:

没有答案