kill TERM pipe program on timeout
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 12 Feb 2014 15:40:40 +0000 (16:40 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 12 Feb 2014 15:40:40 +0000 (16:40 +0100)
lib/Biblio/RFID/Reader/librfid.pm

index a72395e..8f6a96d 100644 (file)
@@ -48,11 +48,16 @@ sub _grep_tool {
 
        eval {
 
-       local $SIG{ALRM} = sub { die "timeout\n" };
-       alarm $timeout;
-
        warn "# _grep_tool $bin $param\n";
-       open(my $s, '-|', "$bin $param 2>/dev/null") || die $!;
+#      $param .= ' 2>/dev/null';
+       my $pipe_pid = open(my $s, '-|', "$bin $param") || die $!;
+
+       local $SIG{ALRM} = sub {
+               warn "TIMEOUT!";
+               kill TERM => $pipe_pid;
+               die "timeout\n"
+       };
+       alarm $timeout;
 
        my $sid;
        my $iso;