my $pid = open(my $FROM_KID, "-|"); die("Failed fork: $!") unless defined($pid); if ($pid) # parent { chomp(my $output = do { local $/; <$FROM_KID> }); waitpid($pid, 0); printf <<'RESULT', $output, $? >> 8; Child output: %s Exit: %d RESULT } else { daemonize_self("", undef); # leave stdout alone exec "date" or die("Failed exec: $!"); }