NAME¶
Proc::ProcessTable - Perl extension to access the unix process table
SYNOPSIS¶
use Proc::ProcessTable;
$p = new Proc::ProcessTable( 'cache_ttys' => 1 );
@fields = $p->fields;
$ref = $p->table;
DESCRIPTION¶
Perl interface to the unix process table.
METHODS¶
- new
- Creates a new ProcessTable object. The constructor can take the following
flags:
enable_ttys -- causes the constructor to use the tty determination code,
which is the default behavior. Setting this to 0 disables this code, thus
preventing the module from traversing the device tree, which on some
systems, can be quite large and/or contain invalid device paths (for
example, Solaris does not clean up invalid device entries when disks are
swapped). If this is specified with cache_ttys, a warning is generated and
the cache_ttys is overridden to be false.
cache_ttys -- causes the constructor to look for and use a file that caches
a mapping of tty names to device numbers, and to create the file if it
doesn't exist. This feature requires the Storable module. By default, the
cache file name consists of a prefix /tmp/TTYDEVS_ and a byte order
tag. The file name can be accessed (and changed) via
$Proc::ProcessTable::TTYDEVSFILE.
- fields
- Returns a list of the field names supported by the module on the current
architecture.
- table
- Reads the process table and returns a reference to an array of
Proc::ProcessTable::Process objects. Attributes of a process object are
returned by accessors named for the attribute; for example, to get the uid
of a process just do:
$process->uid
The priority and pgrp methods also allow values to be set, since these are
supported directly by internal perl functions.
EXAMPLES¶
# A cheap and sleazy version of ps
use Proc::ProcessTable;
$FORMAT = "%-6s %-10s %-8s %-24s %s\n";
$t = new Proc::ProcessTable;
printf($FORMAT, "PID", "TTY", "STAT", "START", "COMMAND");
foreach $p ( @{$t->table} ){
printf($FORMAT,
$p->pid,
$p->ttydev,
$p->state,
scalar(localtime($p->start)),
$p->cmndline);
}
# Dump all the information in the current process table
use Proc::ProcessTable;
$t = new Proc::ProcessTable;
foreach $p (@{$t->table}) {
print "--------------------------------\n";
foreach $f ($t->fields){
print $f, ": ", $p->{$f}, "\n";
}
}
CAVEATS¶
Please see the file README in the distribution for a list of supported operating
systems. Please see the file PORTING for information on how to help make this
work on your OS.
AUTHOR¶
D. Urist, durist@frii.com
SEE ALSO¶
Proc::ProcessTable::Process.pm,
perl(1).