*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> perl5/IPC::Open3 (3)              
Title
Content
Arch
Section
 

Contents


IPC::Open3(3)							 IPC::Open3(3)


NAME    [Toc]    [Back]

     IPC::Open3, open3 - open a	process	for reading, writing, and error
     handling

SYNOPSIS    [Toc]    [Back]

	 $pid =	open3(\*WTRFH, \*RDRFH,	\*ERRFH,
			 'some cmd and args', 'optarg',	...);

DESCRIPTION    [Toc]    [Back]

     Extremely similar to open2(), open3() spawns the given $cmd and connects
     RDRFH for reading,	WTRFH for writing, and ERRFH for errors.  If ERRFH is
     '', or the	same as	RDRFH, then STDOUT and STDERR of the child are on the
     same file handle.	The WTRFH will have autoflush turned on.

     If	WTRFH begins with "<&",	then WTRFH will	be closed in the parent, and
     the child will read from it directly.  If RDRFH or	ERRFH begins with
     ">&", then	the child will send output directly to that file handle.  In
     both cases, there will be a dup(2)	instead	of a pipe(2) made.

     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 select(), which means you'll have to use sysread() instead of normal
     stuff.

     open3() returns the process ID of the child process.  It doesn't return
     on	failure: it just raises	an exception matching /^open3:/.

WARNING    [Toc]    [Back]

     It	will not create	these file handles for you.  You have to do this
     yourself.	So don't pass it empty variables expecting them	to get filled
     in	for you.

     Additionally, 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 cat -v and
     continually read and write	a line from it.


									PPPPaaaaggggeeee 1111
[ Back ]
 Similar pages
Name OS Title
IPC::Open2 IRIX open a process for both reading and writing
open IRIX open for reading or writing
open Tru64 Open a file for reading or writing
open HP-UX open file for reading or writing
creat Tru64 Open a file for reading or writing
TIFFOpen IRIX open a TIFF file for reading or writing
open NetBSD open or create a file for reading or writing
open FreeBSD open or create a file for reading or writing
open OpenBSD open or create a file for reading or writing
XTIFFOpen IRIX open an extended TIFF file for reading or writing
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service