在linux环境下,一共具有以下几种文件类型;
- 普通文件(regular file):最常见的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据对于内核而言并无区别。对普通文件内容的解释由处理该文件的应用程序进行。
- 目录文件(directory file):包含了其他文件的名字以及指向与这些文件有关信息的指针。对一个目录文件具有读许可权的任一进程都可以读该目录的内容,但只有内核可以写目录文件。
- 字符特殊文件(character special file):系统中某些类型的设备。
- 块特殊文件(block special file):典型地用于磁盘设备。系统中的所有设备或者是字符特殊文件,或者是块特殊文件。
- FIFO:用于进程间的通信,有时也将其称为命名管道。
- 套接口(socket):用于进程间的网络通信,套接口也可用于在一台宿主机上的进程之间的非网络通信。
- 符号连接(symbolic link):指向另一个文件
关于块设备和字符设备的区别:
- 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。
- 应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。
这两种类型的设备的根本区别在于它们是否可以被随机访问。字符设备只能顺序读取,块设备可以随机读取。
此处评论已关闭