my $cmd_pid = open my $cmd_fh, '-|', $cmd
or die "Can't run '$cmd': $!\n";
my $yawn = do { local $/; <$cmd_fh> };
close $cmd_fh;
####
my $start_time = time;
sub exec_time { return time - $start_time }
my $cmd = 'sleep 3600 ; echo "yawn"';
my $yawn;
my $cmd_pid = open my $cmd_fh, '-|', $cmd
or die "Can't run '$cmd': $!\n";
eval {
local $SIG{ALRM} = sub { kill 15, $cmd_pid; die "alarm\n" };
alarm 5;
$yawn = do { local $/; <$cmd_fh> };
alarm 0;
};
close $cmd_fh;
printf "(%d) yawn? $yawn", exec_time();
__END__
(5) yawn?
####
kyle@xxx:~$ perl -v | head -5
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
Copyright 1987-2006, Larry Wall
kyle@xxx:~$ uname -a
Linux xxx 2.6.20-16-generic #2 SMP Thu Jun 7 20:19:32 UTC 2007 i686 GNU/Linux