通常,stdout
是行缓冲的。换句话说,只要 printf
参数以换行结束,就可以立即打印该行。当使用管道重定向到 tee
时,这种情况似乎不存在。
我有一个 C + + 程序 a
,它将字符串(始终以 \n
结尾)输出到 stdout
。
当它自己运行时(./a
) ,一切都按照预期在正确的时间正确地打印。但是,如果我将它导入到 tee
(./a | tee output.txt
) ,它在退出之前不会打印任何内容,这违背了使用 tee
的目的。
我知道我可以通过在 C + + 程序中的每次打印操作之后添加一个 fflush(stdout)
来修复它。但是有没有更干净,更简单的方法呢?有没有一个命令我可以运行,例如,将强制 stdout
行缓冲,即使使用管道?