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:
-
pid -- Process::pid.
-
ppid -- Process::ppid.
-
nul-terminated arguments in one single string -- Process::arguments.
-
argument iterator --
Process::argv()
. -
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:
-
parent nodes --
Proc::parent()
. -
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. |