在码代码的时候我们经常会遇到文件系统类型的操作,比如打开一个文件,写文件,读文件之类的操作。涉及这些操作的函数有open(),write(),read()以及fopen(),fwrite(),fread()等函数。那么这些f开头的文件系统操作函数和非f开头的文件系统操作函数有什么区别?这就要介绍一下缓冲文件操作系统和非缓冲文件操作系统,这两类系统都是C语言使用的磁盘文件系统。

  缓冲文件操作系统:系统会自动的在内存区为每一个正在使用的文件开辟一块缓冲区,缓冲区的大小一般由各个C的版本规定,一般的为512Byte即0.5K大小。从此盘向内存读数据时,则一次将一些数据从磁盘文件送内存缓冲区(充满缓冲区),然后再从缓冲区逐个将数送给接收变量(文件描述符);从内存写数据到磁盘文件时,现将数据塞满缓冲区,在一次性将数据从缓冲区送到磁盘文件。用缓冲区可以一次读入一批数据,或输出一批数据,而不是执行一次输入或输出函数就去访问一次磁盘,这样做的目的是减少对磁盘的实际读写次数,因为每一次读写都要移动磁头并寻找磁道扇区,花费一定的时间。缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据,缓冲文件系统函数一般是由f开头的函数,如fopen(),fwrite(),fread()。

  非缓冲文件系统:非缓冲文件系统不会自动地设置缓冲区,需要用户根据自己的需要去设置,在传统的UNIX下,用缓冲文件系统来处理文本文件,用非缓冲文件系统来处理二进制文件。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快。

转载于:https://www.cnblogs.com/gwb-tech-blog/p/6681181.html

缓冲文件系统和非缓冲文件系统相关推荐

  1. C语言缓冲文件系统和非缓冲文件系统

    C 语言所使用的磁盘文件系统有两大类:一类称为缓冲文件系统,又称为标准文件系统:另一类称为非缓冲文件系统. 缓冲文件系统的特点是系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区.从磁盘向内存读入 ...

  2. php mysql 非扫描,PHP的中使用非缓冲模式查询数据库的方法

    最近在开发一个PHP程序时遇到了下面的错误: PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted 错误信息显示允许的 ...

  3. C语言不用文件系统读取文件,C语言-基础教程-非缓冲文件系统

    前面介绍的缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符.字符串.格式化数据,也可以读写二进制数据.非缓冲文件系统依赖于操作系统,通过操作系统的功能对文 ...

  4. 缓冲文件系统(fopen/fread/fwrite)和非缓冲文件系统(open/read/write)

    open:系统调用,返回的是文件描述符,即文件句柄,是文件在文件描述副表里的索引. fopen:C语言库函数,返回的是一个指向文件结构的指针.fopen是ANSI C标准中的C语言库函数,在不同的操作 ...

  5. Go 知识点(03)— 非缓冲 channel 的长度始终为 0

    我们先看下面代码输出通道的长度是多少? func main() {ch := make(chan string)go func() {ch <- "hello"close(c ...

  6. linux使用Quota配额之须配额目录为非独立文件系统并无可分配分区解决办法

    首先,介绍一下现在的环境,我们需要为/home目录进行配额,但是呢,/home目录并非独立文件系统,而使用Quota进行配额需要在独立文件系统上进行. 问题环境:须配额目录为非独立文件系统并且磁盘无可 ...

  7. linux缓存写入文件,实验5Linux文件操作之带缓存和非缓冲文件的读写

    <实验5Linux文件操作之带缓存和非缓冲文件的读写>由会员分享,可在线阅读,更多相关<实验5Linux文件操作之带缓存和非缓冲文件的读写(15页珍藏版)>请在人人文库网上搜索 ...

  8. linux缓存文件和非缓存文件格式,实验5 Linux文件操作之带缓存和非缓冲文件的读写...

    1 实验5Linux 文件操作之带缓存和非缓冲文件的读写 学生姓名:王祥真学号:6103114095专业班级:计科143 实验类型:□ 验证▥综合 □ 设计 □ 创新实验日期:2017.4.20实验成 ...

  9. linux 扩lv文件系统,linuxLVM之LV扩大和缩小容量(非xfs文件系统)

    LVM的基础请见:https://www.cnblogs.com/wxxjianchi/p/9698089.html 一.放大LV的容量.放大容量是由内而外来操作的. 1.设置新的lvm分区:用fdi ...

  10. linux文件系统体系结构 和 虚拟文件系统(VFS)

    图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...

最新文章

  1. 2000 ~2019 年历届 CVPR 最佳论文汇总
  2. Ubuntu 开机 Firmware Bug , Bios corrupted
  3. jQuery学习笔记(一)——基础选择器、过滤选择器、表单选择器
  4. Linq 左连接 left join
  5. Jenkins 流水线 获取git 分支列表_持续集成工具Jenkins看这篇就够啦!
  6. 湖北省首条短途运输航线“荆门—武汉”航线运营
  7. JS纯前端导出PDF及分页和使用window.print()保存PDF
  8. linux 单网卡 双ip,Linux操作系统单网卡双IP的设置
  9. 用的iapp教程手册,iapp模块的使用教程
  10. python xlwt_使用Python和xlwt向Excel文件中写入中文
  11. 【web-攻击验证机制】(3.2.3)验证机制设计缺陷:“记住密码” 功能、用户伪装功能、证书确认不完善
  12. php5 ereg,ereg / eregi替代PHP 5.3
  13. 显示一个立方体的两点透视投影图(用数组存放正方体的各顶点坐标)
  14. 新浪微博回调地址redirect_url(授权回调页)的设置格式
  15. python turtle setheading_Python turtle.right与turtle.setheading的区别
  16. JavaCV 制作字符画
  17. 爱,不留——陈光标裸捐之后
  18. 架构 和 构架 定义
  19. 2022高级Android笔试总结,记录下我磕磕碰碰的三个月找工作经历
  20. AppStore上线审核“App预览和截屏”chrome上的截屏参数

热门文章

  1. 【FLUENT案例】04:利用DDPM+DEM模拟鼓泡流化床
  2. 缓存与缓冲的区别 Difference Between Cache and Buffer
  3. 新增SDK 错误解决办法
  4. 无连续整数的子集数问题
  5. Java和C的关系及发展历程
  6. hdu P3374 String Problem
  7. C#复习笔记(2)--C#1所搭建的核心基础
  8. 通过批处理来运行python程序
  9. 配置WindowsLiveWriter,写cnblogs博客
  10. 又是一个秋天~~~~