当前位置:  开发笔记 > 编程语言 > 正文

如何在不缓冲stdout和stderr的情况下记录输出

如何解决《如何在不缓冲stdout和stderr的情况下记录输出》经验,为你挑选了2个好方法。

我在从自动构建中记录输出时遇到问题.

使用Makefile和makefile实用程序完成构建.

问题是像编译器命令行这样的正常输出转到stdout并且编译错误转到stderr.

我想从屏幕上显示的构建中获取输出.所以类似于:

(stdout) CC -c file.cpp
(stderr) Compile error at file.cpp line 232, blah blah blah
(stdout) CC -c file2.cpp

我尝试过(从ksh脚本)是:

make -k> build.log 2> build.log

这导致单个日志文件,但问题是流被缓冲,因此日志文件中的结果全部混淆.

我可以将输出捕获到2个单独的日志文件中,但之后我就没有关于如何将它们粘合到一个日志文件中的信息.

在这种情况下,有没有办法关闭stdout和stderr的缓冲?



1> Ryan Graham..:
make -k > build.log 2>&1

这应该对你更好,因为它不是单独重定向stderr和stdout,而是将stderr重定向到stdout,这应该使缓冲同步.

如果要将其记录到文件中,并将其打印到控制台:

make -k 2>&1 | tee build.log



2> S.Lott..:

试试这个

make -k > build.log 2>&1

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有