Process::Backgroundable - A Process::Storable object that can be backgrounded


Process-Backgroundable documentation Contained in the Process-Backgroundable distribution.

Index


Code Index:

NAME

Top

Process::Backgroundable - A Process::Storable object that can be backgrounded

SYNOPSIS

Top

  # Background a finite length process
  MyCacheCleaner->new( dir => '...', maxsize => '10 meg' )->background;

  # Background an infinite length process
  MyWebServer->new( dir => '...' )->background;

DESCRIPTION

Top

Process::Backgroundable extends Process::Storable for the purpose of create process objects that can be run in the background and detached from the main process.

It adds a background method that (rather than fork), launches a new copy of Perl, passing the Process to it using Process::Launcher, which will load and execute the process.

Please note that both the STDOUT and STDERR for the backgrounded process will be sent to /dev/null (or your equivalent) so there is no way to recieve any output from the background process, and you will not be notified if it exits.

If you want to add logging or locks or some other feature to your backgrounded process, that is your responsibility, and you set them up in the prepare method.

METHODS

Top

This method inherits all the normal methods from Process and in addition inherits the strict seperation of responsibility described in Process::Storable. You should be aware of both of these.

background

The background is provided by default, and will start another instance of the same Perl you are current running, although not necesarily with the same environment.

This allows you to use Process::Backgroundable in very large applications that may contain other data that will not be so amenable to normal forking.

BUGS

Top

This is implemented with IPC::Run3 calls for now, but we might have to move to Proc::Background for more robustness later on.

SUPPORT

Top

Bugs should be reported via the CPAN bug tracker at

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Process-Backgroundable

For other issues, contact the author.

AUTHOR

Top

Adam Kennedy <adamk@cpan.org>

COPYRIGHT

Top


Process-Backgroundable documentation Contained in the Process-Backgroundable distribution.

package Process::Backgroundable;

use 5.005;
use strict;
use Storable          ();
use File::Temp        ();
use IPC::Run3         ();
use Process::Storable ();

use vars qw{$VERSION @ISA @PERLCMD};
BEGIN {
	$VERSION = '0.21';
	@ISA     = 'Process::Storable';

	# Contains the command to use to launch perl
	# Should be the path to the perl current running.
	# People with special needs should localise this
	# to add any flags.
	@PERLCMD = ( $^X );
}

sub background {
	my $self = shift;

	# Dump the object to the input filehandle
	my $stdin = File::Temp::tempfile();
	$self->serialize( $stdin );
	seek( $stdin, 0, 0 );

	# Generate the command
	my $cmd = [ @PERLCMD, '-MProcess::Launcher', '-e serialized', ref($self) ];

	# Fire the command
	IPC::Run3::run3( $cmd, $stdin, \undef, \undef );

	return 1;
}

1;

__END__