STDOUT和STDERR的重定向不正确

时间:2013-02-11 06:47:04

标签: redirect stdout command-prompt stderr

我在windows上输入以下命令:

C:\> abc.exe -t"param1" >> lofile.txt 2>&1

STDOUT和STDERR都被重定向到输出文件,但是存在问题。

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

首先打印STDOUT,然后在STDERR打印之间的某处。 为什么序列不正确?

1 个答案:

答案 0 :(得分:0)

我认为原因如下:

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

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