[pyar] redireccionar stdout a un proceso python

Facundo Batista facundobatista en gmail.com
Mie Oct 9 11:06:01 ART 2013


2013/10/9 Facundo Batista <facundobatista en gmail.com>:

>> Pero de cualquier manera va a bloquear el intérprete hasta que la ejecución
>> del subproceso se complete, no?
>> No hay una manera de leer la salida del subproceso a medida que se va
>> produciendo, asincrónicamente.
>
> Sí, porque vos tenés abierto el stdout del otro proceso como un file
> handler. O sea, hacés read() de lo que querés. El truco es hacer
> read(N), donde N es una cantidad de bytes, no todo, así que te va a
> traer parte de eso si es que hay...

Para este código en C:

"""
#include "stdio.h"
void main(void)
{
    int i;
    for(i=0;i<20;i++)
    {
        printf("salida %d\r\n",i);
        fflush(0);
        sleep(1);
    }
}
"""

(notar el fflush)

Esto es lo que digo:

>>> pipe = Popen(["./froo.o"], stdout=PIPE)
>>> pipe.stdout.read(4)
'sali'
>>> pipe.stdout.read(4)
'da 0'
>>> pipe.stdout.read(4)
'\r\nsa'
>>> pipe.stdout.read(4)
'lida'
>>> pipe.stdout.read(4)

(acá no se vé, pero hay esos reads los tiré enseguida, antes que termine)

Slds.

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


More information about the pyar mailing list