?
Current Path : /lib64/perl5/vendor_perl/Proc/ProcessTable/ |
Linux gator3171.hostgator.com 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64 |
Current File : //lib64/perl5/vendor_perl/Proc/ProcessTable/Process.pm |
package Proc::ProcessTable::Process; use strict; use warnings; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD); require Exporter; require AutoLoader; @ISA = qw(Exporter AutoLoader); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( ); $VERSION = '0.02'; # Preloaded methods go here. use Carp; use File::Basename; sub AUTOLOAD { my $self = shift; my $type = ref($self) or croak "$self is not an object"; my $name = $AUTOLOAD; $name =~ s/.*://; # strip fully-qualified portion unless (exists $self->{$name} ) { croak "Can't access `$name' field in class $type"; } if (@_) { return $self->{$name} = shift; } else { return $self->{$name}; } } ######################################################## # Kill; just a wrapper for perl's kill at the moment ######################################################## sub kill { my ($self, $signal) = @_; die "PID " . $self->pid . " not valid." unless($self->pid =~ /^-?\d+$/); return( kill($signal, $self->pid) ); } ######################################################## # Get/set accessors for priority and process group # (everything else is just a get, so handled by autoload) ######################################################### # Hmmm... These could use the perl functions to get if not stored on the object sub priority { my ($self, $priority) = @_; if( defined($priority) ){ setpriority(0, $self->pid, $priority); if( getpriority(0, $self->pid) == $priority ){ # Yuck; getpriority doesn't return a status $self->{priority} = $priority; } } return $self->{priority}; } sub pgrp { my ($self, $pgrp) = @_; if( defined($pgrp) ){ setpgrp($self->pid, $pgrp); if( getpgrp($self->pid) == $pgrp ){ # Ditto setpgrp $self->{pgrp} = $pgrp; } } return $self->{pgrp}; } # Apparently needed for mod_perl sub DESTROY {} # Autoload methods go after =cut, and are processed by the autosplit program. 1; __END__ =head1 NAME Proc::ProcessTable::Process - Perl process objects =head1 SYNOPSIS $process->kill(9); $process->priority(19); $process->pgrp(500); $uid = $process->uid; ... =head1 DESCRIPTION This is a stub module to provide OO process attribute access for Proc::ProcessTable. Proc::ProcessTable::Process objects are constructed directly by Proc::ProcessTable; there is no constructor method, only accessors. =head1 METHODS =over 4 =item kill Sends a signal to the process; just an aesthetic wrapper for perl's kill. Takes the signal (name or number) as an argument. Returns number of processes signalled. =item priority Get/set accessor; if called with a numeric argument, attempts to reset the process's priority to that number using perl's <B>setpriority function. Returns the process priority. =item pgrp Same as above for the process group. =item all other methods... are simple accessors that retrieve the process attributes for which they are named. Currently supported are: uid UID of process gid GID of process euid effective UID of process (Solaris only) egid effective GID of process (Solaris only) pid process ID ppid parent process ID spid sprod ID (IRIX only) pgrp process group sess session ID cpuid CPU ID of processor running on (IRIX only) priority priority of process ttynum tty number of process flags flags of process minflt minor page faults (Linux only) cminflt child minor page faults (Linux only) majflt major page faults (Linux only) cmajflt child major page faults (Linux only) utime user mode time (1/100s of seconds) (Linux only) stime kernel mode time (Linux only) cutime child utime (Linux only) cstime child stime (Linux only) time user + system time ctime child user + system time timensec user + system nanoseconds part (Solaris only) ctimensec child user + system nanoseconds (Solaris only) qtime cumulative cpu time (IRIX only) size virtual memory size (bytes) rss resident set size (bytes) wchan address of current system call fname file name start start time (seconds since the epoch) pctcpu percent cpu used since process started state state of process pctmem percent memory cmndline full command line of process ttydev path of process's tty clname scheduling class name (IRIX only) See the "README.osname" files in the distribution for more up-to-date information. =back =head1 AUTHOR D. Urist, durist@frii.com =head1 SEE ALSO L<Proc::ProcessTable>, L<perl(1)>. =cut