doing my pipe between 2 process

Mark Borgerding mark at borgerding.net
Wed Mar 31 21:54:08 EST 2004


elrik wrote:
> I want catch stdout and stderr of an child process and read them with
> the parent process.
> It's like popen4 but wihout shell commande.
> 
> something like that :
> 
> r, w = os.pipe()
> input= os.fdopen(w)
> pid=os.fork()
> if pid: #parent
> 	while 1:
> 		input.read()
> else:
> 	os.dup2(w, sys.stdout.fileno())
> 	print 'exemple'
> 	sys.stdout.flush()
> 
> but il doesn't work!
> How can i make a write AND read file descriptor ?
> Thanks

input.read() will read the *entire* file.

It will not return until the child process closes its stdout, either 
explicitly or by exiting.


You can use input.readline().  Your parent will still block on the 
child's output.  If that's not okay, look at "select" and/or 
non-blocking IO (fcntl and os.O_NONBLOCK flag).




More information about the Python-list mailing list