在linux环境下,一共具有以下几种文件类型;

  1. 普通文件(regular file):最常见的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据对于内核而言并无区别。对普通文件内容的解释由处理该文件的应用程序进行。
  2. 目录文件(directory file):包含了其他文件的名字以及指向与这些文件有关信息的指针。对一个目录文件具有读许可权的任一进程都可以读该目录的内容,但只有内核可以写目录文件。
  3. 字符特殊文件(character special file):系统中某些类型的设备。
  4. 块特殊文件(block special file):典型地用于磁盘设备。系统中的所有设备或者是字符特殊文件,或者是块特殊文件。
  5. FIFO:用于进程间的通信,有时也将其称为命名管道。
  6. 套接口(socket):用于进程间的网络通信,套接口也可用于在一台宿主机上的进程之间的非网络通信。
  7. 符号连接(symbolic link):指向另一个文件

关于块设备和字符设备的区别:

  • 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。
  • 应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。

这两种类型的设备的根本区别在于它们是否可以被随机访问。字符设备只能顺序读取,块设备可以随机读取。

最后修改:2019 年 05 月 04 日
喜欢就给我点赞吧