3个版本
| 0.0.3 | 2019年11月24日 |
|---|---|
| 0.0.2 | 2019年11月18日 |
| 0.0.1 | 2019年11月16日 |
#45 in #sys
83KB
2.5K SLoC
此crate已在crates.io上停止维护。
因为它已被重命名为(lpfs)https://github.com/pearzl/lpfs。
您可以在lpfs的proc_getter分支中找到这些代码。
此仓库的目标是使从proc文件系统中检索系统信息变得更容易。
示例
use proc_getter::cmdline::*;
use proc_getter::pid::cmdline::*;
fn main() {
// /proc/cmdline
println!("{:?}", cmdline());
// /proc/1/cmdline
println!("{:?}", cmdline_of(1));
}
最小要求
rust 2018 (rustc 1.31.0 +)
支持
我尽量使它支持具有3.+内核版本的任何发行版。
不同版本内核和发行版之间的proc文件系统并不相同。某些代码可能无法在您的系统上运行。
因此,几乎所有函数都返回Result,因为指定的文件可能不存在于您的系统中。可能存在指定的文件,但仍然返回Err。我将这种情况视为错误,并应该修复,欢迎提交PR和issue。
大多数列出的文件此处应该得到支持。详细信息如下。
进程
顶级文件
/proc/*
| 文件 | 状态 | 文件 | 状态 | 文件 | 状态 |
|---|---|---|---|---|---|
| buddyinfo | ✔ | cmdline | ✔ | consoles | ✔ |
| cpuinfo | ✔ | crypto | ✔ | devices | ✔ |
| diskstates | ✔ | dma | ✔ | execdomains | ✔ |
| fb | ✔ | filesystems | ✔ | interrupts | ✔ |
| iomem | ✔ | ioports | ✔ | kcore | ✔ |
| kmsg | ❌ | loadavg | ✔ | locks | ✔ |
| mdstat | ✔ | meminfo | ✔ | misc | ✔ |
| modules | ✔ | mounts | ✔ | mtrr | ✔ |
| partitions | ✔ | slabinfo | ✔ | stat | ✔ |
| swaps | ✔ | uptime | ✔ | version | ✔ |
| self | ✔ | sysrq-trigger | ❌ |
进程目录
/proc/${pid}/*
| 文件 | 状态 | 文件 | 状态 | 文件 | 状态 |
|---|---|---|---|---|---|
| cmdline | ✔ | cwd | ✔ | environ | ✔ |
| exe | ✔ | fd | ❌ | maps | ✔ |
| root | ✔ | stat | ✔ | statm | ✔ |
| 状态 | ✔ |
其他子目录
下表列出了已实现的文件。
| 目录 | 文件 |
|---|---|
| acpi | wakeup |
| driver | rtc |
| net | arp, dev, dev_mcast, iptables_name, netstat |
| route |
注意:尚未完全测试。