subprocess.popen, capturar stdout :)

Oswaldo Hernández listas en soft-com.es
Vie Nov 2 15:11:16 CET 2007


Arnau Sanchez escribió:
> Oswaldo Hernández escribió:
> 
>> Ademas, hay otro problema añadido, tengo que capturar stdout y stderr 
>> simultáneamente, los mensajes pueden venir en cualquier momento por 
>> cualquiera de los dos canales. Como readline() es bloqueante, si 
>> espero por stdin, no capturo los mensajes de stderr y a la inversa. 
>> Probe utilizando read y os.read pero no me funcionaban bien (o no supe 
>> hacerlos funcionar).
> 
> Por si acaso te sirve:
> 
> subprocess.Popen(..., stderr=subprocess.STDOUT, ...)
> 
>> Tomando la idea de utilizar un programa auxiliar he creado un 
>> programita en C para hacer esta funcion. 
> 
> ¡Pero eso mismo que has hecho en C se debería poder hacer en Python!
> Si dices que pipes no se bloquea el programa, ya tienes la solución, 
> impleméntalo con pipes también en Python (os.pipe).

Creeme que lo he intentado, el problema que he tenido ha sido con readline(),
line = stdin.readline()
queda esperando indefinidamente hasta que entre una linea por stdin, mientras tando pueden estar 
llegando mensajes por stderr que no son capturados. He intentado utilizad read, pero no lo he 
conseguido.
	

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es