所以,我有以下代码:
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。