Proc::Guard - process runner with RAII pattern
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 code my $proc = proc_guard(sub { ... # run this code in child process }); ...
Proc::Guard runs process, and destroys it when the perl script exits.
This is useful for testing code working with server process.
This is shorthand for:
Proc::Guard->new( command => \@cmdline, );
or
Proc::Guard->new( code => \&code, );
Create and run a process. The process is terminated when the returned object is being DESTROYed.
Proc::Guard->new(command => '/path/to/memcached'); # or Proc::Guard->new(command => ['/path/to/memcached', '-p', '11211']);
The command line.
Proc::Guard->new(code => sub { ... });
'code' or 'command' is required.
Proc::Guard->new(auto_start => 0);
Start child process automatically or not(default: 1).
Returns process id (or undef if not running).
Starts process.
Stops process.
The last exit status code by $proc->stop. If waitpid failed with an error, this will be set to undef.
$proc->stop
waitpid
undef
Tokuhiro Matsuno <tokuhirom AAJKLFJEF GMAIL COM>
Copyright (C) Tokuhiro Matsuno
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Proc::Guard, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Proc::Guard
CPAN shell
perl -MCPAN -e shell install Proc::Guard
For more information on module installation, please visit the detailed CPAN module installation guide.