Linux设备文件中都是虚拟文件吗?

Linux设备文件中都是虚拟文件吗?

下面两个文件是虚拟文件:

/dev/sda1
/proc/cpuinfo

我知道这/dev/sda1是一个设备文件(指向设备驱动程序),所以当我访问这个文件时,我实际上正在访问设备驱动程序。

但是呢/proc/cpuinfo,这个文件也是设备文件吗?如果是的话,其他虚拟文件都是Linux设备文件吗?

答案1

中的所有文件/proc均由文件系统提供proc,如下所述它的联机帮助页:

文件系统proc是一个伪文件系统,它提供了内核数据结构的接口。

这是内核提供的特殊文件系统,用于提供对其存储的数据的访问,例如关于 CPU ( cpuinfo)、关于进程(在 中的数字目录中/proc,对应于每个进程标识符)...其中的文件不是设备文件,它们是对内核进行函数调用以从中检索信息的有效端点。

其他特殊文件系统包括devtmpfssysfs.

所以不,所有“虚拟”文件都不是设备文件。可以说,设备文件根本不是虚拟的,因为设备节点作为真实文件存在。它们的行为方式与大多数人所认为的文件不同,但它们仍然是文件。

这些问题可能会帮助您更好地理解这一切:

答案2

Linux 上的No. /proc是一个伪文件系统,它提供了内核数据结构的接口。其中没有与下面的文件具有相同意义的字符或块特殊文件/dev(您不能使用这些/proc文件来安装文件系统或与调制解调器或磁带驱动器等通信)。

proc(5)您系统上的手册对此文件系统进行了全面解释( man 5 proc)。

相关内容