我试图通过与文件相同的方式获取磁盘统计数据。有没有办法在不读取该文件的情况下达到该值?这些值是如何放置在那里的?是否有任何“.c”文件可以处理要放置在 diskstats 上的数据?那么 proc/stat 和 meminfo 呢? (diskstats 是我主要关心的)
答案1
这/proc
文件— 或者更确切地说,伪文件 — 是用户进程和内核之间的数据接口。当(用户)进程打开/proc
文件并从中读取时,内核会提供数据。所以,是的,有一个.c
生成diskstats
数据的例程——但它是内核的一部分。
通过 proc 伪文件系统可访问的一些数据可以从其他源和/或通过其他方式访问。举一个简单的例子,一个进程通常可以直接访问可以从中收集的大量信息它自己的
/proc/pid
目录。然而,大多数/proc
信息来自用户进程通常无法访问的内核数据结构。特权用户级进程可能可以使用以下命令从内核中提取此信息/dev/kmem
(请参阅内存(4)
和公里内存(7D))——在那些支持它的系统上——但这会非常困难,可能不可移植,而且通常不建议。出于所有实际目的,/proc
这是获取该数据的唯一方法。