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后缓冲区中的内容全部输出。{
printf("%d ",i);
sleep(1);
}
这个不是每秒输出一个数字而是十秒后一次性输出十个数字!
以上是关于linux中fflush函数和printf函数 的主要内容,如果未能解决你的问题,请参考以下文章
Linux C语言printf()函数不加换行符就不能输出打印的内容(fflush(stdout) 刷新缓冲区)
QT Creator里printf函数输出到“应用程序输出”界面?