Proc::ProcessTable(3)

✨ NAME ✨

okay so bestie, this is the Proc::ProcessTable(3) page from User Contributed Perl Documentation, and it's literally a Perl extension to access the unix process table. no cap πŸ’…


🌸 SYNOPSIS 🌸

use Proc::ProcessTable;

my $p = Proc::ProcessTable->new( 'cache_ttys' => 1 );
my @fields = $p->fields;
my $ref = $p->table;

πŸ’– DESCRIPTION πŸ’–

It's a Perl interface to the unix process table. iconic behavior honestly ✨


πŸŽ€ METHODS πŸŽ€

🌟 new 🌟

Creates a new ProcessTable object. The constructor can take these flags:

  • enable_ttys β€” this makes the constructor use the tty determination code, and that's the default behavior. Setting it to 0 disables this code, so the module won't traverse the device tree. On some systems that tree 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 you specify this with cache_ttys, a warning is generated and cache_ttys is overridden to be false. πŸ™ˆ
  • cache_ttys β€” this makes the constructor look for and use a file that caches a mapping of tty names to device numbers, and it creates 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. You can access (and change) the file name via $Proc::ProcessTable::TTYDEVSFILE. πŸŽ€

🌟 fields 🌟

Returns a list of the field names supported by the module on the current architecture. lowkey useful for finding out what your vibe check can actually see πŸ¦‹

🌟 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. periodt πŸ”₯


πŸ¦‹ EXAMPLES πŸ¦‹

First up, a cheap and sleazy version of ps β€” honestly iconic:

# A cheap and sleazy version of ps
use Proc::ProcessTable;

my $FORMAT = "%-6s %-10s %-8s %-24s %s\n";
my $t = Proc::ProcessTable->new;
printf($FORMAT, "PID", "TTY", "STAT", "START", "COMMAND");
foreach my $p ( @{$t->table} ){
  printf($FORMAT,
         $p->pid,
         $p->ttydev,
         $p->state,
         scalar(localtime($p->start)),
         $p->cmndline);
}

And this one dumps all the information in the current process table:

# Dump all the information in the current process table
use Proc::ProcessTable;

my $t = Proc::ProcessTable->new;

foreach my $p (@{$t->table}) {
 print "--------------------------------\n";
 foreach my $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. fr fr, check those files before you come for the module 😭


πŸ‘‘ AUTHOR πŸ‘‘

J. Bargsten, D. Urist β€” shoutout to the authors, absolute main characters 🫢


🌈 SEE ALSO 🌈

  • Proc::ProcessTable::Process
  • perl(1)

πŸ’– okay bestie, that's the whole page β€” from perl v5.42.0, dated 2023-06-22, and it's Proc::ProcessTable(3). stay iconic! πŸ’…βœ¨

πŸ“¦ where this page comes from