我在自动化构建中遇到了一个记录输出的问题。
使用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
这会生成一个单一的日志文件,但问题是这些流被缓冲了,所以日志文件中的结果全部混在了一起。
我可以将输出捕获到两个单独的日志文件中,但那样我就无法知道如何将它们粘合成一个单一的日志文件。
在这种情况下有没有办法关闭标准输出和标准错误的缓冲区?