C编程fflush 函数

最近学习计算机系统第八章 异常的时候涉及到fflush函数的相关知识,有些疑惑,就做了几个小的测试函数试验一下
首先需要知道stdout采用的是行缓冲模式,即printf中如果不加换行符,程序是不会直接在屏幕上打印printf中的内容的,只有当程序碰到
1、\n
2、程序结束
3、调用fflush函数
才会在屏幕上打印。
我现在网站上搜了一点资料,发现有的实验做出来结果不对,索性就直接写一个博客,防止自己忘了。
首现看这个函数1:

主要注意函数的输出结果,函数不会像我们想象的那样先输出wulei,然后再每个一秒输出一个".",而是一起输出,直接最后一行直接出来。
再看函数2:

再看函数2,程序作了一丝丝改动,“wulei\n”和fflush(stdout),我们可以看到程序先将wulei打印出来之后换行,再每隔一秒打印"."。
再看函数3:

我调用了fork()函数创造了一个子进程,发现函数先将wulei打印,之后一行一次性输出,注意输出了两个test,令人疑惑。
函数4:

我在test后面加上了\n,程序先打印了wulei(未换行),再打印了test(换行)。
从上面四个实验其实已经大概看明白到底是怎么回事了。
重点分析3,4:
实验三为什么会出现两个test呢,是因为fork函数调用之后会创建一个和父进程几乎完全相同的子进程,享用共同的stdout区,这是后缓冲区中的wulei已经被函数fflush清除掉了,还剩下test,所以子进程也可以输出test,而且test之后没有\n,所以要等到程序终止时才会打印在屏幕上,是一整行输出。
实验4中test后面加上\n,也等于从缓冲区中输出,此时缓冲区为空,所以子进程也没有东西输出,所以只有一个test。

c fflush函数相关推荐

  1. linux fflush函数,fflush - wwliu的个人页面 - OSCHINA - 中文开源技术交流社区

    概述 函数名: fflush 功 能: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件 头文件: #include 原型:int fflush(FILE *stream) #include # ...

  2. fwrite函数与fflush函数

    以下内容源于网络资源的学习与整理,欢迎交流. 一.fwrite函数 1.函数原型 size_t fwrite(const void *ptr, size_t size, size_t nmemb,FI ...

  3. fflush函数有什么作用?

    说明: 有的朋友对本文的程序结果提出质疑,所以这里说一下,我是在Windows VC++6.0上测试的, 请注意平台和环境的不同. 先来复习一个简单单词吧: flush(注意只有一个f):冲洗,冲刷, ...

  4. linux fflush函数,sleep函数和fflush函数

    看了编程之美这本书,第一个小问题中用到了sleep函数,亲自尝试发现很多问题,在这里记录一下.首先sleep函数在windows和linux中有很多不同之处.在windows中s是大写的,叫Sleep ...

  5. fflush函数作用浅析

    一.fflush函数:更新缓存区 头文件:#include <stdio.h> 函数定义:int fflush(FILE *stream); 函数说明:fflush()会强迫将缓冲区内的数 ...

  6. php fflush失败,php fflush 函数_PHP教程

    php fflush 函数 fflush ( PHP 4中" = 4.0.1 , PHP 5中) fflush -刷新输出到一个文件 描述 布尔fflush (资源$处理) 此功能部队写入所 ...

  7. linux中fflush函数和printf函数 【转】

    本文转载自:http://blog.chinaunix.net/uid-30058258-id-5029847.html printf是一个行缓冲函数 printf函数是标准函数,最终会调用到系统调用 ...

  8. linux系统fflush函数

    在linux系统里面,一般都是行刷新,也就是要输出的内容会先放在缓冲区里面,直到遇到换行符,才会将缓冲区里的内容全部输出到屏幕或者文件中. 函数原型 #include <stdio.h> ...

  9. sync、fsync、fdatasync、fflush函数区别和使用举例

    sync.fsync.fdatasync.fflush函数区别和使用举例 Linux/unix在内核中设有缓冲区.高速缓冲或页面高速缓冲,大多数磁盘I/O(block device)都通过缓冲进行,当 ...

  10. fflush函数的深入理解

    本人昵称sky,欢迎与各位多多交流学习 这样的c程序想必大家都不陌生,fflush()这个函数有清除输入输出缓存的功能,那很多人就会问了,什么是清除输入输出缓存呢? 其实就是我们在printf输出的时 ...

最新文章

  1. 通信行业还是一个靠人际的行业
  2. Python中类方法、类实例方法、静态方法,私有属性和私有方法有何区别?
  3. MySQL中CREATE DATABASE和CREATE SCHEMA区别(转)
  4. Linux内存管理(最透彻的一篇)
  5. ubuntu和linux服务器,Linux服务器系统CentOS和Ubuntu Server如何选择? | 偶乃秋辰
  6. java setr()_Java RPr.setRFonts方法代码示例
  7. 4. 2D绘制与控件绘制
  8. OpenCV:图片的几何变换
  9. python数据处理(招聘信息薪资字段的处理)
  10. 如何重装来客电商源码?
  11. Android 混淆问题排查
  12. win10登陆界面如何截屏
  13. 技术动态 | 不确定性知识图谱的表示和推理
  14. Android图片轮播控件——Banner
  15. 流程自动化(RPA)的发展和应用
  16. 关于EMC DAE、DPE、SPE、SPS的解释
  17. android 输入法,里面还集成语音输入
  18. 我所关心的POS打印机技术参数
  19. Java中身份证、电话号码用星号(****)加以保护
  20. windows server 2012 下载中文语言包

热门文章

  1. bad interpreter问题
  2. 【python学习笔记】初见
  3. seraph_256 写给自己的编程小事
  4. excel打开密码忘记了_行李箱密码忘记了怎么办?教你3招轻松打开
  5. 摄影构图学83年绝版_学手机摄影最好要知道的70条忠告!都是大实话
  6. 毁三观:从 onSavedInstanceState 中取值竟为空?!
  7. 经典计算机模型,经典Volterra模型分界线的计算机模拟
  8. java和ssm开发的医院体检预约系统有论文
  9. 图书信息管理系统C语言IPO,基于IPO的Python教学设计
  10. 友盟,听云统计到的crash如何定位