文件和文件系统
文件
- “一切皆是文件”:普通文件、目录、字符设备、块设备、套接字等都是文件
 - 一个数据容器
 - 文件是一个连续的字节序列。
 - 操作系统没有强加任何格式。
 - 磁盘文件中的每个字节都可单独寻址。
 - 文件也是外部设备的统一接口。
 
文件系统
- 存储和组织计算机文件和数据的方法。
 - 轻松查找和访问文件。
 - 文件系统可以使用数据存储设备。硬盘、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 | 标准错误流 | 
