有哪些方法可以将标准输出捕获到读取时自动清除的缓冲区中?

有哪些方法可以将标准输出捕获到读取时自动清除的缓冲区中?

我想将进程中的标准输出存储到缓冲区中,并在读取后清空缓冲区,采用 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

相关内容