NAME
Proc::Guard - process runner with RAII pattern
SYNOPSIS
use Test::TCP qw/empty_port wait_port/;use File::Which qw/which/;use Proc::Guard;my $port = empty_port();my $proc = proc_guard(scalar(which('memcached')), '-p', $port);wait_port($port);# your code here# --------------# or, use perl codemy $proc = proc_guard(sub {... # run this code in child process});...
DESCRIPTION
Proc::Guard runs process, and destroys it when the perl script exits.
This is useful for testing code working with server process.
FUNCTIONS
- proc_guard(@cmdline|\&code)
-
This is shorthand for:
Proc::Guard->new(command => \@cmdline,);or
Proc::Guard->new(code => \&code,);
METHODS
- my $proc = Proc::Guard->new(%args);
-
Create and run a process. The process is terminated when the returned object is being DESTROYed.
- command
-
Proc::Guard->new(command => '/path/to/memcached');# orProc::Guard->new(command => ['/path/to/memcached', '-p', '11211']);The command line.
- code
-
Proc::Guard->new(code => sub { ... });'code' or 'command' is required.
- auto_start
-
Proc::Guard->new(auto_start => 0);Start child process automatically or not(default: 1).
- pid
-
Returns process id (or undef if not running).
- start
-
Starts process.
- stop
-
Stops process.
VARIABLES
- $Proc::Guard::EXIT_STATUS
-
The last exit status code by
"$proc->stop". If"waitpid"failed with an error, this will be set to"undef".
AUTHOR
Tokuhiro Matsuno <tokuhirom AAJKLFJEF GMAIL COM>
LICENSE
Copyright (C) Tokuhiro Matsuno
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.