The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

package UV::Process;
our $VERSION = '2.000';
use strict;
use Carp ();
sub spawn {
my $self = shift;
ref $self or $self = $self->new(@_);
$self->_spawn();
return $self;
}
sub _set_stdin { shift->_set_stdio_h(0 => @_); }
sub _set_stdout { shift->_set_stdio_h(1 => @_); }
sub _set_stderr { shift->_set_stdio_h(2 => @_); }
1;
__END__
=encoding utf8
=head1 NAME
UV::Process - Process handles in libuv
=head1 SYNOPSIS
#!/usr/bin/env perl
use strict;
use warnings;
use UV;
my $process = UV::Process->spawn(...)
=head1 DESCRIPTION
This module provides an interface to
=head1 EVENTS
=head2 exit
$process->on("exit", sub {
my ($invocant, $exit_status, $term_signal) = @_;
say "The process exited with status $exit_status" unless $term_signal;
say "The process terminated with signal $term_signal" if $term_signal;
});
When the process terminates (either by C<exit> or a signal), this event will
be fired.
=head1 METHODS
L<UV::Signal> inherits all methods from L<UV::Handle> and also makes the
following extra methods available.
=head2 spawn (class method)
my $process = UV::Process->spawn(file => $file, args => \@args);
This constructor method creates a new L<UV::Process> object with the given
configuration, and
process to begin running. If no L<UV::Loop> is provided then the
L<UV::Loop/"default loop"> is assumed.
The following named options are supported:
=over 4
=item
C<file>: a string giving the command name or path to it.
=item
C<args>: a reference to an array of addtional argument values to invoke the
command with.
=item
C<env>: an optional reference to a hash containing the environment variables
for the new process.
=item
C<stdin>, C<stdout>, C<stderr>: optional argument to set up a file descriptor
in the child process.
Pass a plain integer, or filehandle reference to inherit that FD from the
parent.
=item
C<setuid>, C<setgid>: optional integer arguments to attempt to change the
user and group ID of the newly-spawned process.
Not supported on Windows.
=back
=head2 kill
$process->kill($signal);
Sends the specified signal to the process.
=head2 pid
my $pid = $process->pid;
Returns the PID number.
=head1 AUTHOR
Paul Evans <leonerd@leonerd.org.uk>
=head1 LICENSE
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
=cut