文件和文件系统
文件
- “一切皆是文件”:普通文件、目录、字符设备、块设备、套接字等都是文件
- 一个数据容器
- 文件是一个连续的字节序列。
- 操作系统没有强加任何格式。
- 磁盘文件中的每个字节都可单独寻址。
- 文件也是外部设备的统一接口。
文件系统
- 存储和组织计算机文件和数据的方法。
- 轻松查找和访问文件。
- 文件系统可以使用数据存储设备。硬盘、CD-ROM
Unix/Linux文件系统与Windows文件系统区别
Linux文件系统架构图
在用户空间,可以直接使用应用程序对文件进行打开读写关闭操作
在Linux操作系统编程中用到的函数open()、read()
write()、close()等
当用户层发起文件操作请求后,通过VFS(虚拟文件系统)来调用对用的内核函数,内核函数的名称就是在对应用户层函数名字前加了sys
UNIX的操作原语
名称 | 含义 |
---|---|
open | 打开一个文件来读、写或创建一个空文件 |
creat | 创建一个空文件 |
close | 关闭以前打开的文件 |
read | 从文件中读取数据 |
write | 将数据写到文件中 |
lseek | 把文件读写指针移动到特定字节 |
unlink | 删除一个文件 |
remove | 删除文件的另一种方式 |
fcntl | 控制文件的属性 |
文件描述符File Descriptor
内核(kernel)所有打开的文件都需要利用文件描述符。
文件描述符是非负整数
打开现有文件或新建文件时,内核会返回一个文件描述符。
读写文件也需要使用文件描述符来指定待读写的文件。
文件描述符 | 符号常量 | 描述 |
---|---|---|
0 | STDIN_FILENO | 标准输入流 |
1 | STDOUT_FILENO | 标准输出流 |
2 | STDERR_FILENO | 标准错误流 |