当使用 API 技术使用“ReadConsoleOutput”函数在 .NET 中检索控制台缓冲区时,这意味着我可以在同一个输出(缓冲区)中同时拥有标准输出、输入输出和错误输出吗?
或者换句话说:
如果我们通常需要启动一个进程并通过将 StandrdOutput/ErrorOutput/InputOutput 输出分成总共 3 个输出来重定向,那么如果我们使用一种技术来读取控制台缓冲区而不是重定向 3 个输出,我们可以将这 3 个输出全部-in-one 缓冲区内的输出?
我问了一个关于如何读取控制台缓冲区的问题(这里:How to read Console buffer in VBNET?),因为我想象缓冲区将包含所有“合并”在一起的输出,因此我可以检索所有标准输出或错误输出或InputOutput 进入缓冲流而不需要通过分隔重定向任何输出。
控制台缓冲区包含所有合并的输出(所有在控制台中写入的东西,无一例外)还是只有一个输出?
所以,我想知道我所说的是否错了。
更新:
一个更好的例子可能是,如果我有这个过程,我不重定向任何输出:
Private Shared Process_Without_Redirect As New Process() With { _
.StartInfo = New ProcessStartInfo With { _
.CreateNoWindow = True, _
.UseShellExecute = False, _
.RedirectStandardInput = False, _
.RedirectStandardError = False, _
.RedirectStandardOutput = False _
}}
...该进程是一个 CLI 进程,所以如果我使用一种技术来读取启动进程的控制台缓冲区,我将能够从缓冲区中检索标准和错误输出?缓冲区将存储进程的所有输出?
启动的进程写入控制台的所有内容都将存储到缓冲区中吗?所以我可以检索写入多合一输出的缓冲区,而不是重定向和读取每个进程输出?