是否可以在bash中对文件描述符进行选择或轮询?我想要做的事情的本质是:
mkfifo fifo
exec 3<fifo
PROMPT_COMMAND="while read -t 0 line; do echo \$line; done <&3"
exec用于保持管道打开(否则它将在每个循环结束时关闭)。从理论上讲,这会在每次提示之前输出任何进入管道的内容。但是,它似乎不起作用,因为-t0甚至没有尝试阅读。
-t 1
就像一个魅力,但在每次提示时都会造成一秒钟的延迟,这不是我想要的。
最佳选择是使用.2秒超时(如果我正在执行一个命令,这反过来导致某些东西被写入管道,那么当我使用异步消息时,肯定会有一个短暂的延迟),那种延迟我可以忍受。零超时可能没问题,那么我只是创建一个程序以使其具有亚秒级延迟。
有什么想法吗?
答案 0 :(得分:1)
今天我stumbled on this,它实际上非常优雅地解决了我的问题。 screen
允许拆分当前的终端窗口,我可以将窗口的一部分缩小到几行,我保留输入,窗口的另一部分只有cat fifo
屏幕肯定比我已经知道的要多得多(单独分离使它成为有史以来最好的工具之一)。
答案 1 :(得分:0)
下列内容不等同吗?
$&GT; tail -f fifo
您还可以指定睡眠间隔(' - s'),重试和--max-unchanged-stats等。