我需要了解队列的类型是什么,我必须使用它来接收命令的标准输出而不是存储它(如果没有人在同一队列上读取内容立即丢失)。
在同一个队列中,我可以“附加”另一个读取实时内容的命令并使用它。
我已经查看了fifo,但它似乎存储了内容,直到有人读到它。
感谢所有
答案 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.