use strict; use warnings; use IO::Pipe; $SIG{PIPE} = sub {exit;}; print qq{Parent PID $$\n}; my $pipeFH = IO::Pipe->new(); my $pid; if ($pid = fork) { $pipeFH->writer(); print qq{Kid is PID $pid\n}; } elsif(defined($pid)) { $pipeFH->reader(); sleep 1 for 1 .. 100; exit; } while ((my $returnPid = wait) != -1) { print qq{Kid $returnPid returned\n}; }