How can I know how much to read from a subprocess
hat at se-162.se.wtb.tue.nl
Wed Sep 19 14:18:30 CEST 2007
On 2007-09-18, spam.noam at gmail.com <spam.noam at gmail.com> wrote:
> On Sep 18, 1:48 pm, "A.T.Hofkamp" <h... at se-162.se.wtb.tue.nl> wrote:
>> On 2007-09-17, spam.n... at gmail.com <spam.n... at gmail.com> wrote:
>> > It seems that another solution is gobject.io_add_watch, but I don't
>> > see how it tells me how much I can read from the file - if I don't
>> > know that, I won't know the argument to give to the read() method in
>> > order to get all the data:
>> Usually, gobject only tells you that data is there (that is all it knows).
>> Therefore a read(1) should be safe.
> But even if it's fast enough, how do you know how many times you
> should call read(1)? If you do it too much, you'll be blocked until
> more output is available.
after reading 1 byte, wait for gobject again.
In other words, when gobject sends a notice, read 1 byte.
When there is more, gobject will tell you (probably very often :-) ).
>> If that is too slow, consider os.read() which reads all data available (afaik,
>> never tried it myself).
> I tried it now, and it blocks just like the normal file.read().
So "os.read(handle.fileno(), 1000000)" blocks after gobject tells you there is data?
That is different than I heard, but you are probably correct, I cannot easily test this.
More information about the Python-list