Name
Class::Usul::IPC - List/Create/Delete processes
Version
This documents version v0.22.$Rev: 4 $
Synopsis
use q(Class::Usul::IPC);
my $ipc = Class::Usul::IPC->new;
$result_object = $ipc->run_cmd( [ qw(ls -l) ] );Description
Displays the process table and allows signals to be sent to selected processes
Subroutines/Methods
child_list
@pids = $self->child_list( $pid );Called with a process id for an argument this method returns a list of child process ids
popen
$response = $self->popen( $cmd, @opts );Uses IPC::Open3 to fork a command and pipe the lines of input into it. Returns a Class::Usul::Response::IPC object. The response object's out method returns the STDOUT from the command. Throws in the event of an error. See "run_cmd" for a full list of options and response attributes
process_exists
$bool = $self->process_exists( file => $path, pid => $pid );Tests for the existence of the specified process. Either specify a path to a file containing the process id or specify the id directly
process_table
Generates the process table data used by the HTML::FormWidget table subclass. Called by "proc_table" in Class::Usul::Model::Process
run_cmd
$response = $self->run_cmd( $cmd, $opts );Runs the given command. If $cmd is a string then an implementation based on the system function is used. If $cmd is an arrayref then an implementation based on IPC::Run is used if it is installed. If IPC::Run is not installed then the arrayref is joined with spaces and the system implementation is used. The keys of the $opts hashref are:
- async
- 
If asyncis true then the command is run in the background
- debug
- 
Debug status. Defaults to $self->debug
- err
- 
Passing err => q(out) mixes the normal and error output together 
- in
- 
Input to the command. Can be a string or an array ref 
- out
- 
Destination for standard output 
- tempdir
- 
Directory used to store the lock file and lock table if the fcntlbackend is used. Defaults to$self->tempdir
Returns a Class::Usul::Response::IPC object or throws an error. The response object has the following methods:
- core
- 
Returns true if the command generated a core dump 
- err
- 
Contains a cleaned up version of the commands STDERR
- out
- 
Contains a cleaned up version of the commands STDOUT
- pid
- 
The id of the background process. Only set if command is running async 
- rv
- 
The return value of the command 
- sig
- 
If the command died as the result of receiving a signal return the signal number 
- stderr
- 
Contains the commands STDERR
- stdout
- 
Contains the commands STDOUT
On MSWin32 the "popen" method is used instead. That method does not support the async option
signal_process
Send a signal the the selected processes. Invokes the suid root wrapper
signal_process_as_root
$self->signal_process( [{] param => value, ... [}] );This is called by processes running as root to send signals to selected processes. The passed parameters can be either a list of key value pairs or a hash ref. Either a single pid, or an array ref pids, or file must be passwd. The file parameter should be a path to a file containing process ids one per line. The sig defaults to TERM. If the flag parameter is set to one then the given signal will be sent once to each selected process. Otherwise each process and all of it's children will be sent the signal. If the force parameter is set to true the after a grace period each process and it's children are sent signal KILL
__cleaner
This interrupt handler traps the pipe signal
__handler
This interrupt handler traps the child signal
Configuration and Environment
None
Diagnostics
None
Dependencies
- Class::Usul
- Class::Usul::Constants
- Class::Usul::Response::IPC
- Class::Usul::Response::Table
- IPC::Open3
- IPC::SysV
- Module::Load::Conditional
- POSIX
- Proc::ProcessTable
- Try::Tiny
Incompatibilities
There are no known incompatibilities in this module
Bugs and Limitations
There are no known bugs in this module. Please report problems to the address below. Patches are welcome
Author
Peter Flanigan, <Support at RoxSoft.co.uk>
License and Copyright
Copyright (c) 2013 Peter Flanigan. All rights reserved
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic
This program is distributed in the hope that it will be useful, but WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE