polling for output from a subprocess module
Thomas Bellman
bellman at lysator.liu.se
Wed Feb 6 02:18:35 EST 2008
Ivo <noreply at ivonet.nl> wrote:
> Thomas Bellman wrote:
>> 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.
>>
>>
> be carefull that you specify how much you want to read at a time,
> otherwise it cat be that you keep on reading.
> Specify read(1024) or somesuch.
Well, of course you need to specify how much you want to read.
Otherwise os.read() throws an exception:
>>> import sys, os
>>> os.read(sys.stdin.fileno())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: read() takes exactly 2 arguments (1 given)
> 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.
I have never had any problem when using the os.read() function,
as long as I understand the effects of output buffering in the
subprocess. The file.read() method is a quite different animal.
(And then there's the problem of getting mplayer/mencoder to
output any *useful* information, but that is out of the scope of
this newsgroup. :-)
--
Thomas Bellman, Lysator Computer Club, Linköping University, Sweden
"God is real, but Jesus is an integer." ! bellman @ lysator.liu.se
! Make Love -- Nicht Wahr!
More information about the Python-list
mailing list