缓存 stdout 数据并将其转发到 stdout

缓存 stdout 数据并将其转发到 stdout

我正在 Linux 中运行一个命令行工具,每 10 毫秒发出一次数据。我会将其转发给另一个应用程序以可视化数据。例如,我想缓存来自 stdin 的 10 条传入消息,然后将它们作为一次 stdout 刷新释放到可视化应用程序。例如:

10msApp | cache --size 10 | visualizer

是否有任何应用程序可以缓存管道中的标准输入?

答案1

许多应用程序、标准库和框架在读取或写入管道时已经在一定程度上进行缓冲,因此如果您只需要通用缓存,它可能已经为您提供了。

然而,如果这不适合,stdbufGNU coreutils 提供了(所以或多或少每个 Linux 机器都应该有它),并且可以做到这一点。然而,它是通过数据大小而不是行数来实现的。例如:

stdbuf -o 1K 10msApp | visualizer

如果visualizer还缓冲其输入,您可能还需要使用 来运行它stdbuf -i

stdbuf也有行缓冲-o L,但据我所知,你无法调整缓冲区中的行数。

相关内容