]> git.etc.gen.nz Git - mythtv-status.git/commitdiff
Tidy up the forking logic to more inline with my style.
authorAndrew Ruthven <andrew@etc.gen.nz>
Sat, 3 Dec 2011 08:47:37 +0000 (21:47 +1300)
committerAndrew Ruthven <andrew@etc.gen.nz>
Sat, 3 Dec 2011 08:47:37 +0000 (21:47 +1300)
bin/mythtv-status

index 5fe32f96ec24d975f5479fe63592d9f29695f00a..690432547f51de3acb39dc79e2890678853b2a71 100755 (executable)
@@ -1025,16 +1025,21 @@ sub xml_fetch {
       local $SIG{ALRM} = sub { die "alarm\n" };
       alarm(30);
       $content_type = <CHILD>;
-      while (my $line = <CHILD>) {
-        $status .= $line;
+      while (<CHILD>) {
+        $status .= $_;
       }
       alarm(0);
     };
 
     # The child didn't get back to us in time, kill them off.
     if ($@) {
-      kill 15, $pid
+      my $result;
+      do {
+       kill 9, $pid;
+        $result = waitpid($pid, WNOHANG);
+      } while $result > 0;
     }
+    $| = 0;
 
     return ($content_type, $status);
   } else {
@@ -1061,6 +1066,7 @@ sub xml_fetch {
 sub pipe_from_fork ($) {
   my $parent = shift;
 
+  $SIG{CHLD} = 'IGNORE';
   pipe $parent, my $child or die;
   my $pid = fork();
   die "fork() failed: $!" unless defined $pid;