[pyar] Cómo implementar, era --> Re: tail -f con esteroides en Python para ver logs en tiempo real

Daniel Moisset dmoisset en machinalis.com
Vie Ago 27 11:44:33 ART 2010


2010/8/27 Roberto Alsina <ralsina en netmanagers.com.ar>:
>>
>> Pero se tiene que poder: si hago "ls | less", less lee de stdin y es
>> interactivo
>>
>> Sin tiempo de probarlo aca, lo primero que se me ocurre es leer la
>> entrada interactiva de /dev/tty/ (Si, unix only), y la entrada de
>> stdin. y probablemente tengas que multiplexar con select.select, o
>> select.poll, o algo de mas alto nivel para multiplexar estas cosas (se
>> me ocurre glib y eventos, por ej. Calculo que twisted tambien, quizas
>> es overkill)
>
> Es cuestión de "reabrir" stdin (de ahí lo de "normalmente" ;-) En C se hace
> algo con dup o dup2 pero la verdad no me acuerdo bien.

No podes reabrir stdin. dup/dup2 clonan un fd a algo que ya tenes
abierto. pero cuando te llaman con una redireccion o pipe, lo que hace
el shell es cerrarte el stdin (y hacer un dup para que stdin sea el
archivo/pipe nuevo).

Asi que en ese momento no tenes ninguna referencia a la tty y la unica
forma de obtenerla de vuelta es con un open

Saludos,
   D.



More information about the pyar mailing list