免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 89201 | 回复: 17
打印 上一主题 下一主题

fflush(stdout)的用途是什么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-23 16:03 |只看该作者 |倒序浏览
看到这个函数经常被使用,请问它到底起到一个什么作用。是清空什么缓冲区亚?

论坛徽章:
0
2 [报告]
发表于 2006-01-23 17:16 |只看该作者
fflush(stdout)当然是清空stdout的缓冲区了
你可以试试下面的代码
int i;
for (i=0;i<10;i++)
{
  printf("%d",i);
  // fflush(stdout);
sleep(1);
}

再去掉注释试试就知道了

论坛徽章:
0
3 [报告]
发表于 2006-01-23 17:18 |只看该作者
楼上说的很对,stdout就是标准输出的文件句柄

论坛徽章:
0
4 [报告]
发表于 2006-01-23 21:41 |只看该作者
stdout通常跟终端相连,通过描述符1。 如果在运行之前被重定向到非终端,那么printf会进行全缓冲,否则对一行缓冲。 然而你可能希望在终端看到及时的输出。所以需要那么做。

论坛徽章:
0
5 [报告]
发表于 2006-01-24 10:32 |只看该作者
原帖由 NetSnail 于 2006-1-23 17:16 发表
fflush(stdout)当然是清空stdout的缓冲区了
你可以试试下面的代码
int i;
for (i=0;i<10;i++)
{
  printf("%d",i);
  // fflush(stdout);
sleep(1);
}

再去掉注释试试就知道了
结果没什么不同!

论坛徽章:
0
6 [报告]
发表于 2007-10-25 10:22 |只看该作者

关于 fflush

是哦
  将fflush(stdout) 注释掉, 程序一样的运行。而且运行结果和没注释的结果一样哦。
  不知道fflush(sdout) 的作用是什么。

论坛徽章:
0
7 [报告]
发表于 2007-10-25 10:26 |只看该作者
原帖由 Judson 于 2007-10-25 10:22 发表
是哦
  将fflush(stdout) 注释掉, 程序一样的运行。而且运行结果和没注释的结果一样哦。
  不知道fflush(sdout) 的作用是什么。

  1. #include<stdio.h>
  2. #include<unistd.h>
  3. int main()
  4. {
  5.         printf("hello");
  6.         fflush(stdout);
  7.         fork();
  8.         return 0;
  9. }
复制代码

试着把fflush()一行去掉就可以看到差别了.

论坛徽章:
0
8 [报告]
发表于 2007-10-25 10:40 |只看该作者
原帖由 ilcj 于 2006-1-24 10:32 发表
结果没什么不同!

我运行的结果 有flush的时候 是一秒输出一个数字   没flush的时候是10秒后输出10个字符

结果当然一样 都是:0123456789

过程不一样啊

论坛徽章:
0
9 [报告]
发表于 2007-10-25 12:15 |只看该作者
对7楼:
   呵呵  谢谢老哦
  初步认识到了,用 fflush(stdout) 于不用的差别了

论坛徽章:
0
10 [报告]
发表于 2009-12-05 20:09 |只看该作者
8楼正解

  1. #include<stdio.h>
  2. #include<unistd.h>
  3. int main()
  4. {
  5.         printf("hello");
  6.         fflush(stdout);
  7.         fork();
  8.         return 0;
  9. }
复制代码


这样输出一个hello


  1. #include<stdio.h>
  2. #include<unistd.h>
  3. int main()
  4. {
  5.         printf("hello");
  6. //      fflush(stdout);
  7.         fork();
  8.         return 0;
  9. }
复制代码

这样会输出两个hello

但是如果将输出改为printf("hello\n")
那么两个代码都只输出一个hello
为何?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP