1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| sub catch_alrm
{
kill (9, $pid);
$too_long = 1;
}
sub catch_empty
{
}
$SIG{ALRM} = \&catch_alrm;
$SIG{SEGV} = \&catch_empty;
$SIG{BUS} = \&catch_empty;
sub signal {
my ($prog, $timeout, $stdout, $stderr, $res) = @_;
$too_long = 0;
$pid=fork;
if ($pid)
{
eval
{
# PERE
if ($timeout != 0)
{
alarm $timeout;
}
waitpid($pid, 0);
alarm 0;
kill (9, $pid);
}
}
else
{
# FILS
my $result = 0;
$result = exec ("find / > /dev/null 2> /dev/null");
print ("fils > exit\n");
exit();
}
} |
Partager