There's more than one way to do things | |
PerlMonks |
Re: Re: open(KID, "-|") and wait()?by robartes (Priest) |
on Apr 10, 2003 at 14:00 UTC ( [id://249616]=note: print w/replies, xml ) | Need Help?? |
how do I prevent the close() from blocking until the child exits?You could delay the close until you know for sure the child process has finished. Use the non blocking version of waitpid for this. From the docs: This will see if any child has died (without blocking) and return the PID of said child (and the return value in $?, as normal). You can also wait for a specific child by using the pid of that child as first argument to waitpid. Using this, you can make sure you only close the filehandle when the child has already exited. Just periodically check whether the child is dead, and close its filehandle if it is (you'll get a -1 return from the close, but that should be no problem). Unfortunately, this is not portable to all OS. See waitpid for more information. Update: 'now' ne 'know' CU
In Section
Seekers of Perl Wisdom
|
|