Re: read stdout/stderr without blocking

Discussion in 'Python' started by Adriaan Renting, Sep 12, 2005.

  1. Check out the select module, for an example on how to use it:
    pexpect.sourceforge.net




    >>>Jacek Pop*awski <> 09/12/05 10:07 am >>>

    Popen from subprocess module gives me access to stdout, so I can read
    it. Problem is, that I don't know how much data is available... How can
    I read it without blocking my program?

    example:
    --------------------------------------------------------------------
    import subprocess
    import time

    command="ls -l -R /"

    p=subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

    while (p.poll()==None):
    print "."
    r=p.stdout.read()
    --------------------------------------------------------------------

    when you comment out read() - you will notice that loop is working, with
    read() loop is blocked
    Of course I don't need to read() inside loop, but... if output is very
    long (like from "make") and I don't read from stdout - command will
    block itself! I tried to increase bufsize, but it didn't help.

    Is there a way to read only available data from stdout/stderr?
    Is there a way to not block Popen command without reading stdout/stderr?
    --
    http://mail.python.org/mailman/listinfo/python-list
     
    Adriaan Renting, Sep 12, 2005
    #1
    1. Advertising

  2. Adriaan Renting wrote:
    > Check out the select module, for an example on how to use it:
    > pexpect.sourceforge.net


    Two problems:
    - it won't work on Windows (Cygwin)
    - how much data should I read after select? 1 character? Can it block if
    I read 2 characters?
     
    =?UTF-8?B?SmFjZWsgUG9wxYJhd3NraQ==?=, Sep 12, 2005
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?ISO-8859-2?Q?Jacek_Pop=B3awski?=

    read stdout/stderr without blocking

    =?ISO-8859-2?Q?Jacek_Pop=B3awski?=, Sep 12, 2005, in forum: Python
    Replies:
    1
    Views:
    3,999
    =?ISO-8859-2?Q?Jacek_Pop=B3awski?=
    Sep 13, 2005
  2. Adriaan Renting

    Re: read stdout/stderr without blocking

    Adriaan Renting, Sep 12, 2005, in forum: Python
    Replies:
    10
    Views:
    692
    =?ISO-8859-2?Q?Jacek_Pop=B3awski?=
    Sep 16, 2005
  3. Adriaan Renting

    Re: read stdout/stderr without blocking

    Adriaan Renting, Sep 14, 2005, in forum: Python
    Replies:
    0
    Views:
    430
    Adriaan Renting
    Sep 14, 2005
  4. Adriaan Renting

    Re: read stdout/stderr without blocking

    Adriaan Renting, Sep 16, 2005, in forum: Python
    Replies:
    0
    Views:
    387
    Adriaan Renting
    Sep 16, 2005
  5. George C. Demetros

    BLOCKING and STDOUT/STDERR

    George C. Demetros, Jan 6, 2004, in forum: Perl Misc
    Replies:
    1
    Views:
    103
    Ben Morrow
    Jan 6, 2004
Loading...

Share This Page