ActivePerl Documentation
|
NAMEIPC::Open3, open3 - open a process for reading, writing, and error handling
SUPPORTED PLATFORMS
SYNOPSIS
$pid = open3(\*WTRFH, \*RDRFH, \*ERRFH,
'some cmd and args', 'optarg', ...);
my($wtr, $rdr, $err);
$pid = open3($wtr, $rdr, $err,
'some cmd and args', 'optarg', ...);
DESCRIPTIONExtremely similar to open2(), If WTRFH begins with If either reader or writer is the null string, this will be replaced by an autogenerated filehandle. If so, you must pass a valid lvalue in the parameter slot so it can be overwritten in the caller, or an exception will be raised.
If you try to read from the child's stdout writer and their stderr
writer, you'll have problems with blocking, which means you'll want
to use This is very dangerous, as you may block forever. It assumes it's going to talk to something like bc, both writing to it and reading from it. This is presumably safe because you ``know'' that commands like bc will read a line at a time and output a line at a time. Programs like sort that read their entire input stream first, however, are quite apt to cause deadlock. The big problem with this approach is that if you don't have control
over source code being run in the child process, you can't control
what it does with pipe buffering. Thus you can't just open a pipe to
WARNINGThe order of arguments differs from that of open2().
|