码迷,mamicode.com
首页 > 其他好文 > 详细

printf()刷新缓冲区

时间:2020-03-06 19:14:28      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:fork   weixin   span   com   ret   flush   就是   读取数据   避免   

 看到一个关于fork()的题目(来源于:https://mp.weixin.qq.com/s/MsGeaWNmSVOCT7kXFrQm_g),如下:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
 
int main(void)
{
   int i;
   for(i=0; i<2; i++){
      fork();
      printf("-");
   }
 
   wait(NULL);
   wait(NULL);
 
   return 0;
}

结果是输出8个‘-‘,解释的原因是printf()缓冲区没有立即刷新。

查询资料后,得知缓冲区刷新方式除了缓冲区满了和‘\n‘进入缓冲区以外,以下方式也会刷新:

1.程序结束时会刷新,上题就是会在程序结束时刷新。

2.调用fflush(stdout)。

3.scanf()要在缓冲区读取数据时先刷新缓冲区(避免读取了缓冲区内要输出的数据)。

printf()刷新缓冲区

标签:fork   weixin   span   com   ret   flush   就是   读取数据   避免   

原文地址:https://www.cnblogs.com/qiu00/p/12430086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!