X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=runcheckdir;h=d6589f2f5c8716a06c0c29636933bbd6911402ca;hb=98307380429da3ad6e18c99200da6449719dc106;hp=6b5bccaabf9da837869fdfb9ab31572f146f74f4;hpb=cf07941ce4d3f44228cbc776e0c1190b2af9dc92;p=chksht.git diff --git a/runcheckdir b/runcheckdir index 6b5bcca..d6589f2 100755 --- a/runcheckdir +++ b/runcheckdir @@ -80,11 +80,24 @@ if ($td < $every) { exit $oldstatus; } -open CHECK, '-|', $checkcommand; +my ($pid, $hung, $exitstatus); +$SIG{ALRM} = sub { + kill 9, $pid; + $hung = 1; +}; +alarm 10; + +$pid = open CHECK, '-|', $checkcommand; $status = ; $details = join('', ); close CHECK; -my $exitstatus = $? >> 8; +if ($hung) { + $status = 'TIMEOUT'; + $details = 'Check did not complete within ten seconds'; + $exitstatus = -1; +} else { + $exitstatus = $? >> 8; +} if ($exitstatus == 0 && $oldstatus != 0) { do_command($_) foreach @{$on{success}};