文件似乎不规则,但按常规列出

文件似乎不规则,但按常规列出

据我了解,在 Linux/UNIX 上,您从中获取系统信息的文件不是常规文件,而是设备文件,但我遇到了一个似乎不规则的文件(由于其行为和大小由 ls 确定)和其他 C 函数),但按原样列出(通过 ls 以及在 sh 脚本中使用 -f 进行测试时)。

该文件位于/sys/class/thermal/thermal_zone0/tempRaspberry Pi 上的路径,ls 的结果给出:
-r--r--r-- 1 root root 4096 janv. 18 13:55 /sys/class/thermal/thermal_zone0/temp

如果它是设备文件,则 应该有一个c或。b

问题是检测到的该文件的大小为 4096 字节,但该文件的实际大小实际上要小得多。

所以我有几个问题:为什么这个文件没有被列为特殊文件?您应该使用哪些 C 函数来有效地检测此类文件以及当它们是“有限大小”文件时如何测量其内容的大小?

谢谢

答案1

您几乎只会在/proc和中看到此类文件/sys,因为它们实际上不是真正的文件系统,更像是内核的接口。我假设它们没有被标记为设备节点,因为设备将通过主/次设备号来识别,并且procsysfs使用它,而是通过其他方式识别其中的虚拟文件。

识别它们通常不是问题,因为很少有程序用于访问/proc或中的文件/sys。对于其中许多来说,其中的数据是动态生成的,因此除了读取所有内容之外可能没有任何方法来测量大小。例如,对于我测试的文件,查找到最后没有做任何有用的事情,对于宣传该大小的文件,查找将转到位置 4096,无论内容的实际大小如何。

相关内容