Crate pals

Source
Expand description

§pals = Processes’ Arguments LiSt

The main API is pals() which returns ProcList if succeeded.

let proc_list = pals::pals().unwrap();

§ProcList can be regarded as a list of procs().

let proc_list = pals::pals().unwrap();
let procs = proc_list.procs();

The following items can be accessed:

  1. pid – Process::pid.

  2. ppid – Process::ppid.

  3. nul-terminated arguments in one single string – Process::arguments.

  4. argument iterator – Process::argv().

  5. parent process – ProcList::parent_of().

let proc_list = pals::pals().unwrap();
let mut procs = proc_list.procs();
let first = procs.next().unwrap();
println!( "pid:{:?}, ppid:{:?}", first.pid, first.ppid );
println!( "arguments:{}", first.arguments );
println!( "argv:\n{}", first
    .argv()
    .enumerate()
    .fold( String::new(),
        |acc,(i,arg)| format!( "{}\narg #{}:{}", acc, i, arg ))
);
println!( "parent's pid:{:?}", proc_list.parent_of( first.pid ));

§ProcList can be regarded as a list of Proc trees.

Besides items mentioned above, the following extra items can be accessed:

  1. parent nodes – Proc::parent().

  2. all child nodes – Proc::children().

use pals::{Proc, pals};

pals().map( |proc_list| {
    fn assert_ppid_is_parent_pid( proc: Proc ) {
        proc.parent()
            .map( |parent| assert_eq!( parent.pid, proc.ppid ));
        proc.children()
            .for_each( |subproc| assert_ppid_is_parent_pid( subproc ));
    }

    proc_list
        .children()
        .for_each( |proc| assert_ppid_is_parent_pid( proc ))
}).unwrap();

§ProcList can be converted to trees::Forest.

use pals::{Process, pals};
use trees::Forest;

let proc_list = pals().unwrap();

let bfs = proc_list
    .bfs()
    .map( ToOwned::to_owned ); // &Process -> Process

let forest = Forest::<Process>::from( bfs );

§Binary utility

See README.md for more.

Structs§

Pid
Process ID.
Proc
A process agent by which pid,ppid,arguments/argv, parent and child processes can be accessed.
ProcList
Process list. It can be viewed as a list of process or a list of process trees.
Process
Process holding pid, ppid, command name and arguments of one or more nul-terminated argument(s).

Functions§

pals
Dumps running processes’ arguments into a list/forest.
win_argv
Splits command line into arguments, aka argv, using rules defined on Windows platform. See this doc for more.