--- title: Linux的文件IO操作 date: 2024-06-10 17:30:00 +0800 categories: [操作系统与网络] tags: [POSIX] pin: false --- ## 一、概述 在计算机中,一切数据以文件的形式进行管理,我们先了解文件的概念。 文件是具有名称的一组相关数据的有序集合,Linux中一切皆是文件,包括目标和设备。在Linux中,为了方便管理,设备也看成文件。文件结构是文件存放在磁盘等存储设备上的组织方式,主要体现在文件和目录的组织上。 Linux的文件结构是一棵倒长的树结构,根目录下包含了多个核心的系统目录。如下图 ![04061001](/img/computer/04061001.jpg) 普通用户登录Linux系统后,所访问的目录就是在 `/home` 目录中,在Linux中,用户对磁盘文件的访问是通过用户程序接口实现了。大部分情况下,用户使用程序接口经过虚拟文件系统调用设备驱动程序访问磁盘文件。少部分情况,用户程序可以使用设备接口绕过文件系统直接调用设备驱动程序访问磁盘文件。这种方式会给Linux带来不稳定性,虚拟文件系统将不同文件系统整合在一起,为用户提供统一的接口形式,并只存在内存中而不是磁盘中,以虚的形式体现。 Linux为了对文件进行管理,同进程FCB一样,它为每个文件设计了一个叫`FCB`的数据结构,`FCB`用于描述文件当前情况和控制文件的所需信息,例如基本信息、存取控制信息等。`FCB`由文件名和索引结点编号组成。 索引结点(inode):是FCB的组成部分,存储除文件名外的文件描述和管理信息。 目录:是文件控制块(File Control Block,FCB)的有序集合,以文件的形式存在。 可以使用`ls / - ail`来查看文件的索引结点编号。 > 2:46