Alien-ROOT
view release on metacpan or search on metacpan
inc/inc_IPC-Cmd/IPC/Cmd.pm view on Meta::CPAN
If you require this distinction, run the C<run> command in list context
and inspect the individual buffers.
Of course, this requires that the underlying call supports buffers. See
the note on buffers above.
=item timeout
Sets the maximum time the command is allowed to run before aborting,
using the built-in C<alarm()> call. If the timeout is triggered, the
C<errorcode> in the return value will be set to an object of the
C<IPC::Cmd::TimeOut> class. See the L<"error message"> section below for
details.
Defaults to C<0>, meaning no timeout is set.
=back
C<run> will return a simple C<true> or C<false> when called in scalar
context.
In list context, you will be returned a list of the following items:
=over 4
=item success
A simple boolean indicating if the command executed without errors or
not.
=item error message
If the first element of the return value (C<success>) was 0, then some
error occurred. This second element is the error message the command
you requested exited with, if available. This is generally a pretty
printed value of C<$?> or C<$@>. See C<perldoc perlvar> for details on
what they can contain.
If the error was a timeout, the C<error message> will be prefixed with
the string C<IPC::Cmd::TimeOut>, the timeout class.
=item full_buffer
This is an array reference containing all the output the command
generated.
Note that buffers are only available if you have L<IPC::Run> installed,
or if your system is able to work with L<IPC::Open3> -- see below).
Otherwise, this element will be C<undef>.
=item out_buffer
This is an array reference containing all the output sent to STDOUT the
command generated. The notes from L<"full_buffer"> apply.
=item error_buffer
This is an arrayreference containing all the output sent to STDERR the
command generated. The notes from L<"full_buffer"> apply.
=back
See the L<"HOW IT WORKS"> section below to see how C<IPC::Cmd> decides
what modules or function calls to use when issuing a command.
=cut
{ my @acc = qw[ok error _fds];
### autogenerate accessors ###
for my $key ( @acc ) {
no strict 'refs';
*{__PACKAGE__."::$key"} = sub {
$_[0]->{$key} = $_[1] if @_ > 1;
return $_[0]->{$key};
}
}
}
sub can_use_run_forked {
return $CAN_USE_RUN_FORKED eq "1";
}
# incompatible with POSIX::SigAction
#
sub install_layered_signal {
my ($s, $handler_code) = @_;
my %available_signals = map {$_ => 1} keys %SIG;
die("install_layered_signal got nonexistent signal name [$s]")
unless defined($available_signals{$s});
die("install_layered_signal expects coderef")
if !ref($handler_code) || ref($handler_code) ne 'CODE';
my $previous_handler = $SIG{$s};
my $sig_handler = sub {
my ($called_sig_name, @sig_param) = @_;
# $s is a closure referring to real signal name
# for which this handler is being installed.
# it is used to distinguish between
# real signal handlers and aliased signal handlers
my $signal_name = $s;
# $called_sig_name is a signal name which
# was passed to this signal handler;
# it doesn't equal $signal_name in case
# some signal handlers in %SIG point
# to other signal handler (CHLD and CLD,
# ABRT and IOT)
#
# initial signal handler for aliased signal
# calls some other signal handler which
# should not execute the same handler_code again
if ($called_sig_name eq $signal_name) {
$handler_code->($signal_name);
}
# run original signal handler if any (including aliased)
#
if (ref($previous_handler)) {
( run in 0.683 second using v1.01-cache-2.11-cpan-c966e8aa7e8 )