遇到的问题:
想查看设备运行的状态信息, 将设备在控制台上的输出信息重定向到一个文件中,以便查看设备的运行情况。 设备出去测试了一阵,貌似文件中有数据存在,就没太在意。 后来一次, 程序运行没多久, 自己在控制台结束程序, 结果发现定向文件中竟然没数据。于是怀疑RP, 怀疑内核, 怀疑文件系统。。。。
如下程序为演示代码
- #include <stdio.h>
-
#include <stdlib.h>
-
-
int main(void)
-
{
-
while(1) {
-
printf("Hello world!\n");
-
sleep(1);
-
}
-
}
假定编译为prog.exe, 运行
./prog.exe >> a.txt ,
运行一会儿结束程序, 文件 a.txt 中无数据产生。
==============================
在网络上找到的说法:
后来发现是printf的缓冲机制造成的输出错误,标准输出重定向前,printf采取的
是行缓冲,当标准输出重定向后,printf采取的是全缓冲
怎么办呢? 刷新输出缓存区吧, 调用 fflush(stdout)
- #include <stdio.h>
-
#include <stdlib.h>
-
-
int main(void)
-
{
-
while(1) {
-
printf("Hello world!\n");
-
sleep(1);
-
fflush(stdout);
-
}
-
}
搞定。。
阅读(2541) | 评论(0) | 转发(1) |