linux文件共享

apue第三章中的文件共享

Unix系统支持在不同的进程间共享打开的文件,内核使用三种数据结构表示打开的文件。

1:每个进程在进程表中都有 一个记录项,记录项中包括一张进程打开文件的描述符表。每个文件描述符对应一个打开的文件。与每个文件描述符相关联的是

a:文件描述符标志

b:指向一个文件表项的指针

2:内核为所有的打开文件维持一张文件表,每个文件表项包括:

a:文件状态标志

b:当前文件偏移量

c:指向该文件的c节点表项的指针

3:每个打开文件都有一个v字节点结构,v节点包括很多东西(不细说)

如果一个进程打开两个文件,情况就像下图一样。

图片

每个打开的文件都在进程的记录项中,记录项中有指向文件表的指针。文件表指向文件的v节点。

当一个文件被两个进程打开时。如下图

图片

每个进程都有自己的记录表,对应自己进程的文件表,文件表中有自己进程对与文件的偏移量。但是所有进程打开的同一个文件都对应同一个v节点。

当读写文件的时候,都查询自己文件表中所包含的文件偏移量。当用O_APPEND标志打开一个文件,则每次读写的时候,都将文件表项中的当前文件偏移量设置为i节点中的文件偏移量。

举个例子:当进程a打开文件,然后设置偏移量为1500(文件结尾),b再打开文件,设置偏移量为1500a再写入100 这时候文件偏移量变成1600.b这时候再写的时候,扔就按照偏移量1500来写。

如果打开的时候加上O_APPEND标志就,b先设置文件偏移为1600再写入。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值