package Parallel::ForkManager::Child; our $AUTHORITY = 'cpan:DLUX'; # ABSTRACT: role adopted by forked Parallel::ForkManager processes $Parallel::ForkManager::Child::VERSION = '2.02'; use strict; use warnings; use Carp; use Moo::Role; sub is_child { 1 } sub is_parent { 0 } sub start { croak "Cannot start another process while you are in the child process"; } sub finish { my ($s, $x, $r)=@_; $s->store($r); CORE::exit($x || 0); } 1; __END__ =pod =encoding UTF-8 =head1 NAME Parallel::ForkManager::Child - role adopted by forked Parallel::ForkManager processes =head1 VERSION version 2.02 =head1 SYNOPSIS use 5.10.0; use Parallel::ForkManager; my $fm = Parallel::ForkManager->new; say "parent does not consume the child role: ", $fm->does('Parallel::ForkManager::Child'); $fm->start_child(sub{ sleep $_; say "but the child does: ", $fm->does('Parallel::ForkManager::Child'); say "child $_ says hi!" }) for 1..3; =head1 DESCRIPTION When the parent L object forks a child process, its forked incarnation consumes this role. The role doesn't do much: it changes the returning values of C and C in the way you'd expect, change C so that it'd die if called from within the child, and change the implementation of C to potentially send data back to the parent process. =head1 AUTHORS =over 4 =item * dLux (Szabó, Balázs) =item * Yanick Champoux =item * Gabor Szabo =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2018, 2016, 2015 by Balázs Szabó. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut