If $rdrfh is a string (that is, a bareword filehandle rather than a glob
or a reference) and it begins with C<< >& >>, then the child will send output
directly to that file handle. If $wtrfh is a string that begins with
-C<< <& >>", then $wtrfh will be closed in the parent, and the child will read
+C<< <& >>, then $wtrfh will be closed in the parent, and the child will read
from it directly. In both cases, there will be a dup(2) instead of a
pipe(2) made.
C<exec> failures in the child are not detected. You'll have to
trap SIGPIPE yourself.
+open2() does not wait for and reap the child process after it exits.
+Except for short programs where it's acceptable to let the operating system
+take care of this, you need to do this yourself. This is normally as
+simple as calling C<waitpid $pid, 0> when you're done with the process.
+Failing to do this can result in an accumulation of defunct or "zombie"
+processes. See L<perlfunc/waitpid> for more information.
+
This whole affair is quite dangerous, as you may block forever. It
assumes it's going to talk to something like B<bc>, both writing
to it and reading from it. This is presumably safe because you