Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16197
  • 博文数量: 1
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 36
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-30 16:10
文章分类
文章存档

2011年(1)

我的朋友

分类: LINUX

2011-04-21 22:48:57


遇到的问题:
     想查看设备运行的状态信息, 将设备在控制台上的输出信息重定向到一个文件中,以便查看设备的运行情况。 设备出去测试了一阵,貌似文件中有数据存在,就没太在意。 后来一次, 程序运行没多久, 自己在控制台结束程序, 结果发现定向文件中竟然没数据。于是怀疑RP, 怀疑内核, 怀疑文件系统。。。。

如下程序为演示代码

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main(void)
  4. {
  5.     while(1) {
  6.         printf("Hello world!\n");
  7.         sleep(1);
  8.     }
  9. }
假定编译为prog.exe, 运行
./prog.exe >> a.txt ,
运行一会儿结束程序, 文件 a.txt 中无数据产生。
==============================
在网络上找到的说法:

后来发现是printf的缓冲机制造成的输出错误,标准输出重定向前,printf采取的
是行缓冲,当标准输出重定向后,printf采取的是全缓冲


怎么办呢? 刷新输出缓存区吧, 调用 fflush(stdout)

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main(void)
  4. {
  5.     while(1) {
  6.         printf("Hello world!\n");
  7.         sleep(1);
  8.         fflush(stdout);
  9.     }
  10. }

搞定。。


阅读(2536) | 评论(0) | 转发(1) |
1

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~