linux中fflush函数和printf函数

Posted 请给我倒杯茶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux中fflush函数和printf函数 相关的知识,希望对你有一定的参考价值。

本文转载自:http://blog.chinaunix.net/uid-30058258-id-5029847.html

printf是一个行缓冲函数
printf函数是标准函数,最终会调用到系统调用函数,printf函数会掉用到write系统函数;但是调用write函数需要满足一些条件件。
(1)缓冲区满
(2)遇到\n \r
(3)调用fflush函数来冲洗缓冲区
(4)scanf读取缓冲区的内容
(5)调用printf函数的进程或线程结束会调用fflush函数
检测缓冲区的大小为1024B。
fflush函数的作用:把文件流中未写出的数据全部写出去。

函数名: fflush
功 能: 清除读写缓冲区,需要立即把输出缓冲区的数据进行物理写入时
头文件:stdio.h
原型:int fflush(FILE *stream)
其中stream是要冲洗的流
      
fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准]
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上
printf("。。。。。。。。。。。");后面加fflush(stdout);可提高打印效率

例子
 for(i=1;i<=10;i++)     
  {
       printf("%d ",i);
        sleep(1);             
  }
  这个不是每秒输出一个数字而是十秒后一次性输出十个数字!
 在printf后加上fflush后缓冲区中的内容全部输出。

以上是关于linux中fflush函数和printf函数 的主要内容,如果未能解决你的问题,请参考以下文章

Linux C语言printf()函数不加换行符就不能输出打印的内容(fflush(stdout) 刷新缓冲区)

搞懂 fflush(stdout)

QT Creator里printf函数输出到“应用程序输出”界面?

fflush(stdin)和rewind(stdin)

C 语言文件操作 ( fflush 函数 | 刷新缓冲区示例代码 )

解决linux下fflush(stdin)无效