Redirect STDOUT和STDERR的重定向顺序不正确

Redirect STDOUT和STDERR的重定向顺序不正确,redirect,stdout,command-prompt,stderr,Redirect,Stdout,Command Prompt,Stderr,我正在windows上键入以下命令: C:\> abc.exe -t"param1" >> lofile.txt 2>&1 STDOUT和STDERR都被重定向到输出文件,但有一个问题 最初,当程序启动时,有10行STDERR打印,然后是大约100行STDOUT,然后是更多行STDERR。 在控制台(cmd提示符)上,顺序正确。但是当我使用上面的命令重定向到文件时,打印的顺序不正确 首先打印标准输出,然后在标准输出之间的某个地方打印。 为什么顺序不正确?我认为原

我正在windows上键入以下命令:

C:\> abc.exe -t"param1" >> lofile.txt 2>&1
STDOUT和STDERR都被重定向到输出文件,但有一个问题

最初,当程序启动时,有10行STDERR打印,然后是大约100行STDOUT,然后是更多行STDERR。 在控制台(cmd提示符)上,顺序正确。但是当我使用上面的命令重定向到文件时,打印的顺序不正确

首先打印标准输出,然后在标准输出之间的某个地方打印。
为什么顺序不正确?

我认为原因如下:

STDOUT和STDERR的缓冲区是分开的。 填充每个缓冲区后,内容将复制到相应的文件中

由于STDERR缓冲区有时由于日志数量较少而在之后填充,因此,它将在稍后阶段移动到文件中。
这就是为什么即使程序以几行STDERR打印开始,STDOUT日志也会出现在STDERR日志之前的文件中。

这看起来像是OP问题的答案,因此应该被接受。但我怀疑真正的问题是,该怎么办!:-)我知道这就是困扰我的原因。