我想将进程中的标准输出存储到缓冲区中,并在读取后清空缓冲区,采用 FIFO 样式。
我知道我可以通过管道传输标准输出,但管道/文件将不断增长并包含我已经读取的数据。我只想要新鲜数据。
command > named_pipe &
是否有其他内置方法(类似于网络套接字中的缓冲区)可以将数据重定向到?
答案1
我不明白命名管道为什么不能解决你的问题。此示例使用两个 shell 接口,shell_1
并且shell_2
.我将 I/O 缩进/缩进到比shell_2
更大的位置,shell_1
以尝试区分哪个 shell 发生了哪些 I/O。
$ mkfifo my_pipe
(shell_1) $ echo hi > my_pipe # Blocks waiting for a reader
(shell_2) $ cat my_pipe # Unblocks shell_1
hi
(shell_2) $ cat my_pipe # blocks -- does not print "hi" again
(shell_1) $ echo bye > my_pipe # Unblocks shell_2
bye # Printed by shell_2