#process #name #id #module #list #open #listing

process_list

Crate for listing the processes open in the OS, usually for retrieving their ID by their name

6 releases

0.2.1 Jan 18, 2020
0.2.0 Jan 13, 2020
0.1.3 Jan 12, 2020

#428 in Operating systems

46 downloads per month
Used in robopilot

MIT license

14KB
228 lines

Functionalities

This crate exposes functionalities for dealing with processes and modules loaded inside them in a streaming manner.

Process Listing

This crate exposes a for_each_process function to deal sequentially with every process open in the operating system.

Example

Printing every process to stdout

use std::path::{Path, PathBuf};
use process_list::for_each_process;
fn print_processes(id : u32, name : &Path) {
    println!("Id: {} --- Name: {}", id, name.display());
}

for_each_process(print_processes).unwrap();

Modules Listing

This crate exposes a for_each_module function to deal sequentially with every module loaded in a process.

Example

Printing every module loaded in the current process to stdout

use process_list::for_each_module;
use std::process;

fn print_stuff() {
    env_logger::init();
    for_each_module(process::id(), |(address, size), name| {
        println!("{:016X} - {} \t {}", address, size, name.display())
    })
    .unwrap();
}

Features

You can enable the log feature of this crate in order to get logging from it.

Support

For now only Windows is supported, but it should be simple enough to port on other operating systems.

It's not a priority but pull requests are well accepted.

Dependencies

~195KB