[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