Re: polling for output from a subprocess module
- From: Ivo <noreply@xxxxxxxxx>
- Date: Tue, 05 Feb 2008 21:55:20 +0100
Thomas Bellman wrote:
jakub.hrozek@xxxxxxxxx wrote:be carefull that you specify how much you want to read at a time, otherwise it cat be that you keep on reading.
try:
test = Popen(test_path,
stdout=PIPE,
stderr=PIPE,
close_fds=True,
env=test_environ)
while test.poll() == None:
ready = select.select([test.stderr], [], [])
if test.stderr in ready[0]:[...]
t_stderr_new = test.stderr.readlines()
if t_stderr_new != []:
print "STDERR:", "\n".join(t_stderr_new)
t_stderr.extend(t_stderr_new)
The problem is, that it seems that all the output from the subprocess
seems to be coming at once. Do I need to take a different approach?
The readlines() method will read until it reaches end of file (or
an error occurs), not just what is available at the moment. You
can see that for your self by running:
$ python -c 'import sys; print sys.stdin.readlines()'
The call to sys.stdin.readlines() will not return until you press
Ctrl-D (or, I think, Ctrl-Z if you are using MS-Windows).
However, the os.read() function will only read what is currently
available. Note, though, that os.read() does not do line-based
I/O, so depending on the timing you can get incomplete lines, or
multiple lines in one read.
Specify read(1024) or somesuch.
In case of my PPCEncoder I recompiled the mencoder subprocess to deliver me lines that end with \n.
If anyone can tell me how to read a continues stream than I am really interested.
cya
.
- Follow-Ups:
- Re: polling for output from a subprocess module
- From: Thomas Bellman
- Re: polling for output from a subprocess module
- References:
- polling for output from a subprocess module
- From: jakub . hrozek
- Re: polling for output from a subprocess module
- From: Thomas Bellman
- polling for output from a subprocess module
- Prev by Date: Re: Client side GUI-like web framework ?
- Next by Date: Re: Why chdir command doesn't work with client.get_transport() ?
- Previous by thread: Re: polling for output from a subprocess module
- Next by thread: Re: polling for output from a subprocess module
- Index(es):
Relevant Pages
|