Crate pals[][src]

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.