in reply to Re: Running a string through a filter program and recieving the output as a string
in thread Running a string through a filter program and recieving the output as a string

Although when using SystemV (Sunos 5.9) today, I had a complaint about a defunct process being left even after closing both the read and write channels - this being in a subroutine that handled repeated communications with a time-series database language interpreter. At some point there was one defunct process for each time I had called the subroutine. To fix this, I had to modify the code to specifically tell the parent to wait. It seems silly that I should have to do that, but on the other hand it is indeed partially documented in perlipc. Here is what I had to do to fix it, but applied to the above piece of code instead of mine:
use IPC::Open2; use POSIX ":sys_wait_h"; my $pid = open2 ( REA, WRI, 'tr a-z A-Z' ) or die $!; for (<DATA>){ print {\*WRI} [(my $cmd, my @rest) = split]->[0]; } close WRI; print <REA>; close REA; # but believe it or not, under sysV the zombie is still the +re! waitpid($pid,0); # this will finally kill it cleanly! __END__ # although exit from the program will eventually kill it of co +urse an apple a day boat for bloat

-M

Free your mind

  • Comment on Re^2: Running a string through a filter program and recieving the output as a string
  • Download Code