Expand description
ProcFS - 进程信息伪文件系统
该模块提供了一个与 Linux /proc 兼容的虚拟文件系统,用于导出内核和进程信息。
§组件
ProcFS- 文件系统结构,管理 /proc 目录树ProcInode- Inode 实现,支持静态和动态内容ContentGenerator- 动态内容生成器 traitgenerators- 内置生成器(meminfo、cpuinfo、uptime 等)
§设计概览
§Generator 模式
ProcFS 使用 Generator 模式 动态生成文件内容:
pub trait ContentGenerator: Send + Sync {
fn generate(&self) -> Vec<u8>;
}§文件类型
- 静态文件:内容固定,创建时确定
- 动态文件:每次读取时调用 Generator 生成
- 动态符号链接:目标路径动态计算(如
/proc/self) - 进程目录:为每个进程创建
/proc/[pid]/子目录
§导出的信息
§系统信息
/proc/meminfo- 内存使用情况/proc/cpuinfo- CPU 信息/proc/uptime- 系统运行时间/proc/mounts- 挂载点列表
§进程信息
/proc/[pid]/stat- 进程状态(单行格式)/proc/[pid]/status- 详细状态(键值对格式)/proc/[pid]/cmdline- 命令行参数
§使用示例
use crate::fs::init_procfs;
// 初始化并挂载 procfs
init_procfs()?;
// 读取系统信息
let meminfo = vfs_load_file("/proc/meminfo")?;
let uptime = vfs_load_file("/proc/uptime")?;Re-exports§
pub use inode::ContentGenerator;pub use inode::ProcInode;pub use inode::ProcInodeContent;pub use proc::ProcFS;