[pyar] redireccionar stdout a un proceso python

Santiago Paleka santiagopaleka en gmail.com
Mie Oct 9 10:23:36 ART 2013


El 9 de octubre de 2013 09:51, Daniel Moisset <dmoisset en machinalis.com>escribió:

> [voy a suponer que hablas de un sistema operativo unix-like]
>

Si, es un ubuntu.


> subprocess esta bien. Lo que probablemente esta pasando es que el proceso
> esta buffereando internamente la salida; el programa C que diste de ejemplo
> al menos usa printf, que cuando no larga la salida por una tty bufferea en
> memoria (bloques de tipicamente 4KB) antes de largar a stdout. asi que por
> varios segundos ese problama realmente no envia nada al exterior, y por lo
> tanto ni python ni ningun otro proceso puede sacar esos datos. Fijate que
> si en el shell haces ./tuprogramaenC | cat pasa lo mismo
>
> D.
>
> Para evitar lo que me decís, probé de poner un fflush(stdout) después del
printf, pero no hubo cambios, además el programa que quiero capturar la
salida no es mio por lo que no puedo agregar fflush.

con el cat no funcionó, por las dudas te pongo como lo agregué:
pipe = Popen(["./prints","|","cat"],stdout=PIPE)

después hago pipe.stdout.read() y esto se bloquea hasta que termina el
programa "./prints"
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20131009/5790bc68/attachment.html>


More information about the pyar mailing list