- 从最简单的意义上讲,文件就是一个有名称的数据集合。
- 在Unix/Linux中,文件的定义更为广泛。文件是任意源,有一个名称,可以从中读取数据;或者是任意目标,有一个名称,可以向其中写入数据。因此当使用Unix/Linux时,文件不仅指磁盘文件,而且还指任意的物理设备。例如键盘(一种输入源)、显示器(一种输出目标)都可以作为文件被访问。另外还有不存在物理实体的文件,它们也接收输入或产生输出,从而提供具体的服务。
以这种方式定义文件拥有重大意义:它意味着Unix/Linux程序可以使用简单的过程从任意的输入源读取数据,或者向任意的输出目标写入数据。
Unix/Linux文件可以分成3类:
- 普通文件(文本文件+二进制文件)
- 目录
- 伪文件
伪文件并不用来存储数据,基于这一原因,这些文件本身不占用任何空间。伪文件的目的是提供一种服务,这种服务采取和常规文件相同的访问方式进行访问。多数情况下,伪文件用来访问内核提供的服务。
在伪文件中,有3种特定的类型最常见:
- 特殊文件:也称设备文件,是物理设备的内部表示。例如键盘、显示器、打印机、磁盘驱动器都可以当作特殊文件来访问。
- 命名管道mkfifo:是管道功能的一个扩展,它能够将一个程序的输出连接到另一个程序的输入上。
- proc文件:允许访问内核中的信息。在少数几种特定情况下,甚至还可以使用proc文件修改内核中的数据。最初创建这些文件的目的是用来提供正在运行的进程的信息因此命名为“proc”。
特殊文件: