use strict; use warnings; use Test::More; use Test::SharedFork; use Parallel::Prefork; my $i = 0; my $j = 0; my $pm = Parallel::Prefork->new({ max_workers => 3, trap_signals => { TERM => 'TERM', }, before_fork => sub { my $pm = shift; $i++; }, after_fork => sub { my ($pm, $pid) = @_; $j++; }, }); while ( $pm->signal_received ne 'TERM' ) { $pm->start( sub { if ( $i == 10 ) { kill TERM => $pm->manager_pid; } } ); } $pm->wait_all_children; cmp_ok($i, '>=', 10, 'before_fork callback was called 10 times at least'); cmp_ok($j, '>=', 10, 'after_fork callback was called 10 times at least'); done_testing;