incrustar xterm y salida consola
pachi en mmn-arquitectos.com
pachi en mmn-arquitectos.com
Dom Feb 20 20:54:58 CET 2005
> Aquí dejo este link que completa el código de Gumer y que soluciona el
> problema
> http://www.sistemasabertos.com.br/~cleber/python/teste-vte.py
Después de indagar porqué no parecía funcionar la lectura por líneas de
las llamadas a popen con readlines() y usar hilos parece que el problema
está en la librería estándar stdio.c [1][2].
Resulta que la librería stdio detecta si escribe a una terminal o a otro
descriptor de archivos y decide el tipo de buffering que hace. Así en el
caso de un proceso hijo nunca acaba leyendo línea a línea, con lo que se
tiene una especie de "bloqueo" en la E/S. Esto ocurre aunque se indique a
popen* que use un buffer línea a línea, puesto que en este caso
simplemente devolverá el buffer "de python" línea a línea y no el buffer
"del sistema".
Aparte de la solución propuesta, otra solución que parece factible es el
uso del módulo pexpect, como se recomienda en el enlace.
Saludos,
Pachi
[1] http://mail.python.org/pipermail/python-list/2004-March/212871.html
[2] http://pexpect.sourceforge.net/#faq
Más información sobre la lista de distribución Python-es