5.1 setbuf和setvbuf可以用来更改缓冲的类型,可以使用setbuf函数打开或关闭缓冲机制。为了带缓冲进行I/O,参数buf必须指向一个长度为BUFSIZ的缓冲区。通常在此之后该流就是全缓冲,但是如果和该流和终端设备相关,那么改成行缓冲。为了关闭缓冲,将buf设置为NULL

void setbuf(FILE *restrict fp, char *restrict buf);

int setvbuf(FILE *restrict fp, char *restrict buf, int mode, size_t size);

主要判断一下是不是终端设备,设置mode

size就设置成BUFSIZ就好

5.2  fgets函数读入数据,直到行结束或缓冲区满(当然会留一个字节存放null字节)。同样,fputs只负责讲缓冲区的内容输出直到一个null字节,而并不考虑缓冲区是否包含换行符。所以并没有影响。

5.3 当printf没有输出任何字符时,如printf(""),则函数返回0

5.4 当程序有EOF,再移植问题上考虑 系统是有符号还是无符号字符类型的,因为EOF为0。

5.5 fflush()是工作在流上的,它仅仅冲洗缓存从应用程序到操作系统

fsync工作在底层,它告诉操作系统冲洗缓存到物理设备

总之fsync是再文件描述符上工作,它不管文件流和它的缓存,文件流是在一个应用程序中,文件描述符实在操作系统内核中进行操作

所以说应该先调用fflush将内存缓冲区的数据加载到cpu中,然后用fsync将内核缓冲载入到磁盘

5.6 当程序交互运行时候,标准输入和标准输出均为行缓冲方式,每次调用fgets时候标准输出设备将自动冲洗。所有不需要fflush

UNIX环境高级编程之第5章:标准I/O库-习题相关推荐

  1. UNIX 环境高级编程总结——第五章 标准I/O 库

    5.1 流和 FILE 对象 对于标准 I/O 库,它们的操作则是围绕流(stream)进行的. 当打开一个流时,标准 I/O 函数 fopen 返回一个指向 FILE 对象的指针. 为了引用一个流, ...

  2. UNIX环境高级编程之第4章:文件和文件夹-习题

    4.1 stat函数是尾随符号链接的,所以用stat替换lstat不会显示符号链接的信息 4.2 在一个目录下先再shell中输入umask shell进程再进行创建文件的操作.其权限抖都会被屏蔽 4 ...

  3. unix环境高级编程之 read与write 函数详解

    学习记录:unix环境高级编程之 read 与write  函数详解 备注:本博文非本人所写,本人觉得此文讲的非常地道通俗易懂,所以摘录在此以方便以后再次查看 read函数从打开的设备或文件中读取数据 ...

  4. UNIX环境高级编程源码

    UNIX环境高级编程源码 一.下载源码 利用wget命令下载源码,源码地址http://apuebook.com/src.3e.tar.gz 可以在服务器的根目录下创建文件夹,mkdir 1.mkdi ...

  5. 《Unix环境高级编程》Note——第一章基础知识

    文章目录 第一章 Unix基础知识 1.引言 2.Unix体系结构 3.登录 4.文件和目录 5.输入和输出 6.程序和进程 7.出错处理 8.用户标识 9.信号 10.时间值 11.系统调用和库函数 ...

  6. UNIX环境高级编程(屏幕打印和inet_ntoa输出异常问题)

    一.来回在屏幕和文件之间打印 在网上没找到在屏幕和文件来回打印的方法,翻了下UNIX环境高级编,里面有个freopen用于在一个指定的流上打开一个指定的文件,如果要将标准输出打印到文件,需要调用该函数 ...

  7. python flask高级编程之restful_('Python Flask高级编程之RESTFul API前后端分离精讲',),全套视频教程学习资料通过百度云网盘下载...

    资源详情 r n t某课网好评度100%的Python Flask高级编程之RESTFul API前后端分离精讲 r n t t t第1章 随便聊聊 r n t t t聊聊Flask与Django,聊 ...

  8. 《UNIX环境高级编程(第3版)》——1.7 出错处理

    本节书摘来自异步社区<UNIX环境高级编程(第3版)>一书中的第1章,第1.7节,作者:[美]W. Richard Stevens , Stephen A.Rago著,更多章节内容可以访问 ...

  9. unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏

    这几本UNIX系统编程宝典,重印无数次,几代程序员都视如珍宝的几本书,小编在出版圈里快十年了,见证了这本书图灵版.异步社区版的出版.营销,对这套书倾注了一定的感情.今天继续分享给你们,好书总会有人还不 ...

  10. 开发日记-20190822 关键词 读书笔记《Unix环境高级编程(第二版)》《掌控习惯》DAY 2

    Preface 话说,昨天开始尝试着去改变自己,从基础的习惯开始,11:30准时睡觉,平时差不多12:30才睡觉.按理说,比平时早了一个小时睡觉吧,然后我就把闹钟提前了45分钟,想着还能比平常多睡15 ...

最新文章

  1. 与HTTP关系密切的协议:IP、TCP、DNS
  2. 微软(中国)CTO韦青:人工智能是拿来用的,不是拿来炒的
  3. app.listen(3000)与app是不一样的
  4. Navicat 连接MySQL数据库 报错2059 - authentication plugin 'caching_sha2_password'的解决办法...
  5. MS SQL backup database的俩个参数
  6. 干货 | 携程异地多活-MySQL实时双向(多向)复制实践
  7. 生成对抗网络(GAN)的统计推断
  8. DataGirdView 常用操作
  9. python核心编程笔记chapter 3
  10. Css学习总结(5)——CSS常见布局方式
  11. 0917 词法分析程序(java版)
  12. HR图像添加运动焦散模糊【Matlab】
  13. python离线录音转文字软件_如何将语音文件转换为文字?这5款软件轻松做到!...
  14. 项目实战:Qt5/C++:QT象棋【初版】
  15. 【uniapp】 H5微信授权登录
  16. 任志强:房价至少还要涨十多年 北京房价不会跌
  17. search:笔记本插上耳机还是外放?(Dell win10)
  18. VBA写入公式(4):数字转大写金额公式
  19. Mybatis学习一
  20. mac 命令行 解压7z文件_命令行压缩解压7z

热门文章

  1. ColorPic 一套簡單好用的顏色選擇器!
  2. HtmlTextWriter类的学习
  3. Coding Interview Guide -- 判断二叉树是否为平衡二叉树
  4. Flask应用错误处理
  5. Codeforces 396C
  6. 数据结构——二叉查找树
  7. angularJS使用rootscope创建父域和子模态框通用的属性与函数
  8. C#复习(学生信息输入)
  9. MySQL数据库分区的概念与2大好处(1)
  10. Appium API文档中文版