下面两个文件是虚拟文件:
/dev/sda1
/proc/cpuinfo
我知道这/dev/sda1
是一个设备文件(指向设备驱动程序),所以当我访问这个文件时,我实际上正在访问设备驱动程序。
但是呢/proc/cpuinfo
,这个文件也是设备文件吗?如果是的话,其他虚拟文件都是Linux设备文件吗?
答案1
中的所有文件/proc
均由文件系统提供proc
,如下所述它的联机帮助页:
文件系统
proc
是一个伪文件系统,它提供了内核数据结构的接口。
这是内核提供的特殊文件系统,用于提供对其存储的数据的访问,例如关于 CPU ( cpuinfo
)、关于进程(在 中的数字目录中/proc
,对应于每个进程标识符)...其中的文件不是设备文件,它们是对内核进行函数调用以从中检索信息的有效端点。
其他特殊文件系统包括devtmpfs
和sysfs
.
所以不,所有“虚拟”文件都不是设备文件。可以说,设备文件根本不是虚拟的,因为设备节点作为真实文件存在。它们的行为方式与大多数人所认为的文件不同,但它们仍然是文件。
这些问题可能会帮助您更好地理解这一切:
答案2
Linux 上的No. /proc
是一个伪文件系统,它提供了内核数据结构的接口。其中没有与下面的文件具有相同意义的字符或块特殊文件/dev
(您不能使用这些/proc
文件来安装文件系统或与调制解调器或磁带驱动器等通信)。
proc(5)
您系统上的手册对此文件系统进行了全面解释( man 5 proc
)。