2009-10-02 21 views
5

¿Es posible hacer selects o encuestas en los descriptores de archivos en bash? La esencia de lo que estoy tratando de hacer es lo siguiente:Equivalente de select o poll en bash

mkfifo fifo 
exec 3<fifo 
PROMPT_COMMAND="while read -t 0 line; do echo \$line; done <&3" 

El ejecutivo está ahí para mantener el tubo abierto (lo contrario sería cerrada al final de cada bucle). En teoría, esto daría como resultado cualquier cosa que ingrese a la tubería antes de cada aviso. Sin embargo, no parece funcionar, como con -t0 ni siquiera trata de leer.

-t 1 funciona como un encanto, pero eso obliga a un segundo de retraso en cada aviso, que no es lo que quiero.

Lo óptimo sería hacer una selección con .2 segundos de tiempo de espera (si estoy ejecutando un comando que a su vez hace que se escriba algo en la tubería, es probable que haya un pequeño retraso ya que estoy trabajando con asincrónico mensajes), y esa demora con la que puedo vivir. El tiempo de espera de cero probablemente estaría bien, luego solo crearé un programa para tener un retraso de segundo.

¿Alguna idea?

Respuesta

1

I stumbled on this hoy en día, y que en realidad resuelve mi problema con bastante elegancia. screen permite dividir la ventana del terminal actual, donde puedo reducir una parte de la ventana a solo un par de líneas, donde guardo mi entrada, y solo cat fifo en la otra parte de la ventana.

La pantalla definitivamente oscila mucho más de lo que ya sabía (separarla la hace una de las mejores herramientas).

0

¿No sería lo siguiente equivalente?

$> -f cola FIFO

También puede especificar intervalos de sueño ('-s'), reintentos y --max-invariables-estadísticas, etc.

+0

cola no (la cola es para archivos buscables), cat haría lo que estás sugiriendo, pero rompería tu línea de comandos si recibes datos cuando estás escribiendo tu comando. O tendrías que hacerlo en una consola diferente si tienes una. – falstro

Cuestiones relacionadas