Эквивалент выбора или опроса в bash - PullRequest
5 голосов
/ 02 октября 2009

Можно ли делать выборки или опросы дескрипторов файлов в bash? Суть того, что я пытаюсь сделать, заключается в следующем:

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

Exec существует, чтобы держать трубу открытой (иначе она была бы закрыта в конце каждой петли). Теоретически, это будет выводить все, что входит в канал перед каждым приглашением. Однако, похоже, что он не работает, так как с -t0 он даже не пытается читать.

-t 1 работает как брелок, но это вызывает задержку в одну секунду при каждом запросе, а это не то, что я хочу.

Оптимальным было бы сделать выбор с тайм-аутом .2 секунды (если я выполняю команду, которая, в свою очередь, вызывает запись чего-либо в канал, неизбежно будет небольшая задержка, поскольку я работаю с асинхронными сообщениями ), и с этой задержкой я могу жить. Нулевой тайм-аут, вероятно, будет в порядке, тогда я просто создам программу с задержкой менее секунды.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 17 ноября 2009

Я наткнулся на это сегодня, и это на самом деле решает мою проблему довольно элегантно. screen позволяет разделить текущее окно терминала, где я могу уменьшить одну часть окна до пары строк, где я сохраняю свой ввод, и просто cat fifo в другой части окна.

Экран определенно трясет намного больше, чем я уже знал (один только отсоединение делает его одним из лучших инструментов).

0 голосов
/ 16 октября 2009

Не будет ли следующее эквивалентным?

$> хвост -f fifo

Вы также можете указать интервалы сна ('-s'), повторные попытки и --max-unchanged-stats и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...