美文网首页
4.文件读写的一些细节

4.文件读写的一些细节

作者: 辉神来了 | 来源:发表于2019-08-19 20:20 被阅读0次
errno 和 perror
  • errno就是error number,意思就是错误号码。linux系统中对各种常见错误做了个编号,当函数执行错误时,函数会返回一个特定的errno编号来告诉我们这个函数到底哪里错了。
  • errno是由OS来维护的一个全局变量,任何OS内部函数都可以通过设置errno来告诉上层调用者究竟刚才发生了一个什么错误。
  • errno本身实质是一个int类型的数字,每个数字编号对应一种错误。当我们只看errno时只能得到一个错误编号数字(譬如-37),不适应于人看。
  • linux系统提供了一个函数perror(意思print error),perror函数内部会读取errno并且将这个不好认的数字直接给转成对应的错误信息字符串,然后print打印出来。
read和write的count
  • count和返回值的关系。count参数表示我们想要写或者读的字节数,返回值表示实际完成的要写或者读的字节数。实现的有可能等于想要读写的,也有可能小于(说明没完成任务)
    (2)count再和阻塞非阻塞结合起来,就会更加复杂。如果一个函数是阻塞式的,则我们要读取30个,结果暂时只有20个时就会被阻塞住,等待剩余的10个可以读。
    (3)有时候我们写正式程序时,我们要读取或者写入的是一个很庞大的文件(譬如文件有2MB),我们不可能把count设置为210241024,而应该去把count设置为一个合适的数字(譬如2048、4096),然后通过多次读取来实现全部读完。
文件IO效率和标准IO
  • 文件IO就指的是我们当前在讲的open、close、write、read等API函数构成的一套用来读写文件的体系,这套体系可以很好的完成文件读写,但是效率并不是最高的。
  • 应用层C语言库函数提供了一些用来做文件读写的函数列表,叫标准IO。标准IO由一系列的C库函数构成(fopen、fclose、fwrite、fread),这些标准IO函数其实是由文件IO封装而来的(fopen内部其实调用的还是open,fwrite内部还是通过write来完成文件写入的)。标准IO加了封装之后主要是为了在应用层添加一个缓冲机制,这样我们通过fwrite写入的内容不是直接进入内核中的buf,而是先进入应用层标准IO库自己维护的buf中,然后标准IO库自己根据操作系统单次write的最佳count来选择好的时机来完成write到内核中的buf(内核中的buf再根据硬盘的特性来选择好的实际去最终写入硬盘中)。

相关文章

  • 4.文件读写的一些细节

    errno 和 perror errno就是error number,意思就是错误号码。linux系统中对各种...

  • C++的读写操作流程

    一、读写操作流程 1.为要进行操作的文件定义一个流对象。 2.打开(建立)文件。 3.进行读写操作。 4.关闭文件...

  • Node笔记--------fs文件模块

    fs是filesystem的缩写,基本上就是node对于文件系统操作封装的一些api 一、文件的读写 文件的读写这...

  • Zsh 开发指南(第十四篇 文件读写)

    导读 之前我们也偶尔接触过读写文件的方法,本篇会系统讲读写文件的各种方法。 写文件 写文件要比读文件简单一些,最常...

  • #介绍文件的操作方式

    1.文件的打开操作 2.文件的关闭操作 3.文件的读写 4.读数据(read) 读单个长度 5.读数据(readl...

  • ex15~ex16文件操作

    进入文件操作部分,这里涉及文件操作的一些方法,先罗列在下面: open--打开文件r只读,r+读写w新建,w+读写...

  • C语言读写文件

    C语言文件读写### 标准文件读写 非标准文件读写 标准文件读写 头文件 include 打开文件 函数原型:FI...

  • python 读写文件,json,目录

    常见的一些json读写的操作读取某个目录下的文件 读取某些json字段 读写文件 读取shell参数,参数下标从1...

  • 跟我一起学Python(八)

    一、IO编程 读写文件是最常见的IO操作,Python内置了读写文件的函数。文件读写的原理:在磁盘上读写文件的功能...

  • Python 学习笔记6 2018-04-13

    文件操作: 1,文件的读写操作 2,文件的各种系统操作 3,存储对象 1,文件的读写操作 读写数据: ...

网友评论

      本文标题:4.文件读写的一些细节

      本文链接:https://www.haomeiwen.com/subject/sonesctx.html