3 个版本
使用旧的 Rust 2015
0.1.2 | 2018年12月1日 |
---|---|
0.1.1 | 2017年5月7日 |
0.1.0 | 2016年10月7日 |
Unix API 排名第 390
在 k2i 中使用
29KB
664 行
procps-sys
此库允许您完全与 procps
接口,它提供对 Linux 的 /proc
文件系统的 API。
您可以在 crates.io 上找到它。
依赖
- ubuntu 16.04
sudo apt-get install libprocps4-dev
示例
extern crate procps_sys;
use procps_sys::readproc::{openproc, readproc, closeproc, proc_t};
use std::ffi::CStr;
use std::ptr::null_mut;
fn main() {
unsafe {
// intialize query for process list
let proctab = openproc(/* fills cmdline line attribute */
procps_sys::readproc::PROC_FILLCOM);
// go through all processes
let mut procinfo = proc_t::default();
while readproc(proctab, &mut procinfo) != null_mut() {
// read cmdline attribute
let cmdline = if procinfo.cmdline == null_mut() {
"".to_string()
} else {
CStr::from_ptr(*procinfo.cmdline)
.to_string_lossy()
.into_owned()
};
// print information
println!("pid: {} cmdline: \"{}\"", procinfo.tid, cmdline);
}
closeproc(proctab);
}
}
#include <string.h>
#include <stdio.h>
#include <proc/readproc.h>
int main(int argc, char **argv) {
PROCTAB *proc = openproc(PROC_FILLMEM | PROC_FILLSTAT | PROC_FILLSTATUS | PROC_FILLCOM);
proc_t *proc_info;
while ((proc_info = readproc(proc, NULL)) != NULL) {
if (proc_info->cmdline != NULL) {
printf("%20s:\t%5ld\t%5lld\t%5lld\t%20s\n", proc_info->cmd, proc_info->resident,
proc_info->utime, proc_info->stime, proc_info->cmdline[0]);
freeproc(proc_info);
}
}
closeproc(proc);
}
依赖项
~47KB