首页 > 其他分享 >文件的基本操作

文件的基本操作

时间:2024-10-20 20:46:11浏览次数:1  
标签:文件 调用 系统 表中 进程 基本操作 打开

img

创建文件

img

删除文件

img

在这里我们可以看到,删除文件这个系统调用也是需要用文件名去目录表中寻找文件的

打开文件

当用户对一个文件实施多次读/写等操作时,每次都要从检索目录开始.为了避免多次重复地检索目录,大多数操作系统要求,当用户首次对某文件发出操作请求时,须先利用系统调用open将该文件打开.系统维护一个包含所有打开文件信息的表,称为打开文件表.所谓“打开”,是指系统检索到指定文件的目录项后,将该目录项从外存复制到内存中的打开文件表的一个表目中,并将该表目的索引号(也称文件描述符)返回给用户.当用户再次对该文件发出操作请求时,可通过文件描述符在打开文件表中查找到文件信息,从而节省了大量的检索开销.当文件不再使用时,可利用系统调用Close关闭它,则系统将会从打开文件表中删除这一表目。

注意当仅使用open系统调用时,仅仅是将该文件的FCB调入到了打开文件表中,并没有将文件的数据从外存读入内存。那是read系统调用要干的事情

在多个进程可以同时打开文件的操作系统中,通常采用两级表:整个系统表和每个进程表.整个系统的打开文件表包含与进程无关的信息,如文件在磁盘上的位置、访问日期和文件大小.每个进程的打开文件表保存的是进程对文件的使用信息,如文件的当前读写指针、文件访问权限并包含指向系统表中适当条目的指针.一旦有进程打开了一个文件,系统表就包含该文件的条目.当另一个进程执行调用打开时,只不过是在其打开文件表中增加一个条目,并指向系统表的相应条目.通常,系统打开文件表为每个文件关联一个打开计数器(Open Count),以记录多少进程打开了该文件.当文件不再使用时,利用系统调用Close关闭它,会删除单个进程的打开文件表中的相应条目,系统表中的相应打开计数器也会递减.当打开计数器为0时,表示该文件不再被使用,并且可从系统表中删除相应条目.图4.3展示了这种结构。

img

文件名不必是打开文件表的一部分,因为一旦完成对 FCB 在磁盘上的定位,系统就不再使用文件名。对于访问打开文件表的索引号,UNIX称之为文件描述符,而 Windows 称之为文件句柄。因此,只要文件未被关闭,所有文件操作都是通过文件描述符(不是文件名)来进行。

只要完成了文件打开 open()系统调用,后面再使用 read()、write()、Lseek()、close()等文件操作的系统调用,就不再使用文件名,而使用文件描述符。该考点已反复考过多次。

每个打开文件都具有如下关联信息:

  • 文件指针。系统跟踪上次的读写位置作为当前文件位置的指针,这种指针对打开文件的某个进程来说是唯一的,因此必须与磁盘文件属性分开保存。
  • 文件打开计数。计数器跟踪当前文件打开和关闭的数量。因为多个进程可能打开同一个文件,所以系统在删除打开文件条目之前,必须等待最后一个进程关闭文件。
  • 文件磁盘位置。大多数文件操作要求系统修改文件数据。查找磁盘上的文件所需的信息保存在内存中,以便系统不必为每个操作都从磁盘上读取该信息。
  • 访问权限。每个进程打开文件都需要有一个访问模式(创建、只读、读写、添加等)。该信息保存在进程的打开文件表中,以便操作系统能够允许或拒绝后续的 IO 请求。

关闭文件

img

读文件

img

写文件

img

img

标签:文件,调用,系统,表中,进程,基本操作,打开
From: https://www.cnblogs.com/AH20/p/18487842

相关文章

  • logback.xml配置文件详解
    原文链接:logback.xml配置文件详解–每天进步一点点上一篇文章介绍了springboot配置自定义日志文件logback.xml今天这篇文章简单介绍一下logback.xml配置文件的一些含义。1.基本结构logback的基本结构如下图:configuration表示配置的根节点appender用来格式化日志输出......
  • 文件的物理结构
    文件块和磁盘块类似于内存分页,磁盘中的存储单元也会被分为一个个“块/磁盘块/物理块”。很多操作系统中,磁盘块的大小与内存块、页面的大小相同。内存与磁盘之间的数据交换(即读/写操作、磁盘I/O)都是以“块”为单位进行的。即每次读入一块,或每次写出一块文件分配方式连续分......
  • 批量修改文件夹内各种格式文件名(与文件夹名保持一致)——EXCEL VBA 实现
     如下图:加入我们有3个文件夹,需要将3个文件夹内所有文件名改为与所在文件夹名一致,可用excelvba实现。方法如下: 一、打开此xlsm文件打开excel,  alt+F11快捷键打开代码编辑窗口。二、将文件夹路径修改为你的文件夹路径,如下图:需要重命名的文件夹全部放入一个总文件......
  • base64编码图片二进制数据后直接保存在html文件中
    相关内容:在markdown编辑器中嵌入base64图片看到一个帖子,那就是base64编码用来http服务中对二进制文件编码,那么可以不可以直接在html文件中使用base64编码后的字符串来表示图片呢,于是就有了本文的尝试。注意,这里使用的是markdown格式的图片插入链接格式,即\(![图片文字描述](图......
  • 在运维领域,为什么以文件形式存储密码比环境变量存储密码要更安全?
    dockercomposesecretshttps://docs.docker.com/compose/how-tos/use-secrets/Asecretisanypieceofdata,suchasapassword,certificate,orAPIkey,thatshouldn’tbetransmittedoveranetworkorstoredunencryptedinaDockerfileorinyourapplicat......
  • 模块paramiko,使用密钥文件ssh登录
    1.不用密码,使用密钥文件登录importparamiko#指定私钥位置private_key=paramiko.RSAKey.from_private_key_file("/root/.ssh/id_rsa")#创建ssh对象ssh=paramiko.SSHClient()#允许连接不在know_hosts文件ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)#连接服务器......
  • 【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有
    【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉”零、报错在使用DiskGenius对磁盘分区进行调整时,DiskGenius检查出磁盘报错,报错信息:文件使用的簇被标记为空闲或与其它文件有交叉,本文介绍如何解决此错误。注意:在操作磁盘之前请把重要数......
  • PbootCMS增加可允许上传文件类型
    在PBootCMS中,默认情况下只允许上传某些类型的文件。如果您需要增加允许上传的文件类型,可以通过修改系统配置文件来实现。步骤登录后台管理登录PBootCMS后台管理界面。进入系统设置在后台管理界面中,找到并点击“系统设置”或类似的选项。编辑上传设置在系统设置......
  • 使用xfs文件系统加密磁盘分区
    目录简介磁盘管理常用命令1.查看操作系统支持的文件系统类型2.已经加载到内存中支持的文件系统3.更新Linux核心的分区表信息4.XFS文件系统的描述数据观察5.文件系统的整体磁盘使用量6.目录所占用容量7.链接8.列出系统上的所有磁盘列表查看格式化的磁盘分区信息9.列出磁盘的分区表......
  • 使用audacity工具来导出wav文件
    1、打开audacity应用程序2、在audacity中打开mp3文件,3、选取一段需要导出的音频,ctrl+x剪切。4、新建一个文件,ctrl+v粘贴上一步剪切的内容。5、点击文件中的导出功能,选择wav格式,按确定。......