美文网首页
7.多次打开同一文件与O_APPEND

7.多次打开同一文件与O_APPEND

作者: 辉神来了 | 来源:发表于2019-08-27 13:22 被阅读0次
重复打开同一文件读取
  • 一个进程中两次打开同一个文件,然后分别读取,看结果会怎么样
  • 结果无非2种情况:一种是fd1和fd2分别读,第二种是接续读。经过实验验证,证明了结果是fd1和fd2分别读。
  • 分别读说明:我们使用open两次打开同一个文件时,fd1和fd2所对应的文件指针是不同的2个独立的指针。文件指针是包含在动态文件的文件管理表中的,所以可以看出linux系统的进程中不同fd对应的是不同的独立的文件管理表。
重复打开同一文件写入
  • 一个进程中2个打开同一个文件,得到fd1和fd2.然后看是分别写还是接续写?
  • 正常情况下我们有时候需要分别写,有时候又需要接续写,所以这两种本身是没有好坏之分的。关键看用户需求
  • 默认情况下应该是:分别写(实验验证过的)

####### 加O_APPEND解决覆盖问题

  • 有时候我们希望接续写而不是分别写?办法就是在open时加O_APPEND标志即可
O_APPEND的实现原理和其原子操作性说明
  • O_APPEND为什么能够将分别写改为接续写?关键的核心的东西是文件指针。分别写的内部原理就是2个fd拥有不同的文件指针,并且彼此只考虑自己的位移。但是O_APPEND标志可以让write和read函数内部多做一件事情,就是移动自己的文件指针的同时也去把别人的文件指针同时移动。(也就是说即使加了O_APPEND,fd1和fd2还是各自拥有一个独立的文件指针,但是这两个文件指针关联起来了,一个动了会通知另一个跟着动)
  • O_APPEND对文件指针的影响,对文件的读写是原子的。
  • 原子操作的含义是:整个操作一旦开始是不会被打断的,必须直到操作结束其他代码才能得以调度运行,这就叫原子操作。每种操作系统中都有一些机制来实现原子操作,以保证那些需要原子操作的任务可以运行。

相关文章

  • 7.多次打开同一文件与O_APPEND

    重复打开同一文件读取 一个进程中两次打开同一个文件,然后分别读取,看结果会怎么样 结果无非2种情况:一种是fd1和...

  • 无标题文章

    O_APPEND//追加(在文件后面写) ====================================...

  • python操作文本文件

    打开与关闭文件 在磁盘上读写文件之前,必须先打开这个文件。打开文件就需要提供文件的路径。 在与Python程序同一...

  • 文件系统之文件描述符

    Linux文件系统结构 调用Open函数会发生什么 对同一个文件打开多次会怎样 父子进程的文件关系 重定向的实现 ...

  • 文件操作

    声明:图片资源摘自于网络 创建文件 文件原子操作O_APPEND标志,进程对文件偏移量调整和追加数据是原子操作O_...

  • 《Git/Gitlab进阶》十:测试文件(夹)数量内容增减对项目

    本章主要测试讲解 项目中的文件数量消长(新增或删除文件时) 与 存在的文件内容消长(同一份文件修改多次) ,这两种...

  • JMeter入门指南-7.参数化设置

    7.参数化设置 7.1从csv文件中读取 7.1.1新建参数文件 在电脑中新建.csv文件 打开填写参数,注意:无...

  • 【终端】常用命令

    8. 显示/不显示隐藏文件 7. 打开/关闭Finder中显示完整路径 6. 查看文件夹大小 5. 打开/关闭Ti...

  • 文件打开关闭配对问题

    VideoDecoder打开文件 MediaSource打开文件 同一个线程有两个对象分别打开两个文件,第一个对象...

  • android多次打开同一个应用

    在启动页设置android:launchMode="singleTask"后,点击home,再次打开应用,会重新打...

网友评论

      本文标题:7.多次打开同一文件与O_APPEND

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