在bash中等效于select或poll

时间:2009-10-02 07:29:36

标签: bash

是否可以在bash中对文件描述符进行选择或轮询?我想要做的事情的本质是:

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

exec用于保持管道打开(否则它将在每个循环结束时关闭)。从理论上讲,这会在每次提示之前输出任何进入管道的内容。但是,它似乎不起作用,因为-t0甚至没有尝试阅读。

-t 1就像一个魅力,但在每次提示时都会造成一秒钟的延迟,这不是我想要的。

最佳选择是使用.2秒超时(如果我正在执行一个命令,这反过来导致某些东西被写入管道,那么当我使用异步消息时,肯定会有一个短暂的延迟),那种延迟我可以忍受。零超时可能没问题,那么我只是创建一个程序以使其具有亚秒级延迟。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

今天我stumbled on this,它实际上非常优雅地解决了我的问题。 screen允许拆分当前的终端窗口,我可以将窗口的一部分缩小到几行,我保留输入,窗口的另一部分只有cat fifo

屏幕肯定比我已经知道的要多得多(单独分离使它成为有史以来最好的工具之一)。

答案 1 :(得分:0)

下列内容不等同吗?

$&GT; tail -f fifo

您还可以指定睡眠间隔(' - s'),重试和--max-unchanged-stats等。