我在windows上输入以下命令:
C:\> abc.exe -t"param1" >> lofile.txt 2>&1
STDOUT和STDERR都被重定向到输出文件,但是存在问题。
最初当程序启动时,有10行STDERR打印,然后是大约100行STDOUT,然后是更多行STDERR。 在控制台(cmd提示符)上,订单是正确的。但是当我使用上面的命令重定向到文件时,顺序与打印的顺序不正确。
首先打印STDOUT,然后在STDERR打印之间的某处。 为什么序列不正确?
答案 0 :(得分:0)
我认为原因如下:
STDOUT和STDERR的缓冲区是分开的。 填充每个缓冲区后,内容将复制到相应的文件中。
由于日志数量较少,STDERR缓冲区有时会填满,因此会在稍后阶段将其移动到文件中。 这就是为什么在STDERR日志之前在文件中看到STDOUT日志的原因,即使程序以几行STDERR打印开始。