29 lines
1,013 B
Rust
29 lines
1,013 B
Rust
extern crate procfs;
|
|
|
|
/// List processes using posix shared memory segments
|
|
|
|
fn main() {
|
|
let shared_memory_vec = procfs::Shm::new().unwrap();
|
|
|
|
for shared_memory in &shared_memory_vec {
|
|
println!("key: {}, shmid: {}", shared_memory.key, shared_memory.shmid);
|
|
println!("============");
|
|
|
|
for prc in procfs::process::all_processes().unwrap() {
|
|
let prc = prc.unwrap();
|
|
match prc.smaps() {
|
|
Ok(memory_maps) => {
|
|
for (memory_map, _memory_map_data) in &memory_maps {
|
|
if let procfs::process::MMapPath::Vsys(key) = memory_map.pathname {
|
|
if key == shared_memory.key && memory_map.inode == shared_memory.shmid {
|
|
println!("{}: {:?}", prc.pid, prc.cmdline().unwrap());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Err(_) => continue,
|
|
}
|
|
}
|
|
println!();
|
|
}
|
|
}
|