Linux将标准输出重定向到实时管道

时间:2016-01-15 16:12:00

标签: linux bash

我需要了解队列的类型是什么,我必须使用它来接收命令的标准输出而不是存储它(如果没有人在同一队列上读取内容立即丢失)。

在同一个队列中,我可以“附加”另一个读取实时内容的命令并使用它。

我已经查看了fifo,但它似乎存储了内容,直到有人读到它。

感谢所有

1 个答案:

答案 0 :(得分:0)

解决此问题的一种简单方法是使用tee作为拆分器/缓冲区。您可以使用mkfifo创建FIFO,然后将程序输出到此FIFO。当您需要将应用程序连接到输出时,创建一个新FIFO并从第一个FIFO读取tee并输出到第二个FIFO。这样,如果您需要将第二个应用程序连接到输出,则可以使用第二个FIFO。

如果您先取消链接,我想您可以重复使用相同的FIFO名称。已经运行的进程将保留一个句柄,即使它不再存在。

mkfifo fifo
app > fifo &

mkfifo fifo2
tee fifo2 | rapp1 < fifo &

mkfifo fifo3
tee fifo3 | rapp2 < fifo2 &

# etc.