【问题标题】:Redirection of STDOUT and STDERR not in proper orderSTDOUT 和 STDERR 的重定向顺序不正确
【发布时间】:2013-02-11 06:47:03
【问题描述】:

我在 Windows 上输入以下命令:

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

STDOUT 和 STDERR 都被重定向到输出文件,但出现了问题。

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

首先打印 STDOUT,然后在 STDERR 打印之间的某个位置出现。 为什么顺序不正确?

【问题讨论】:

    标签: redirect stdout command-prompt stderr


    【解决方案1】:

    我认为原因如下:

    STDOUT 和 STDERR 的缓冲区是分开的。 一旦每个缓冲区被填满,内容就会被复制到相应的文件中。

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

    【讨论】:

    • 这看起来像是 OP 问题的答案,因此应该被接受。我怀疑 真正的 问题是如何处理它! :-) 我知道这让我很困扰。
    猜你喜欢
    • 2013-04-13
    • 2013-09-02
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2016-01-13
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多