By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,766 Members | 1,427 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,766 IT Pros & Developers. It's quick & easy.

doing my pipe between 2 process

P: n/a
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
Jul 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
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).

Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.