我正在 Linux 中运行一个命令行工具,每 10 毫秒发出一次数据。我会将其转发给另一个应用程序以可视化数据。例如,我想缓存来自 stdin 的 10 条传入消息,然后将它们作为一次 stdout 刷新释放到可视化应用程序。例如:
10msApp | cache --size 10 | visualizer
是否有任何应用程序可以缓存管道中的标准输入?
答案1
许多应用程序、标准库和框架在读取或写入管道时已经在一定程度上进行缓冲,因此如果您只需要通用缓存,它可能已经为您提供了。
然而,如果这不适合,stdbuf
GNU coreutils 提供了(所以或多或少每个 Linux 机器都应该有它),并且可以做到这一点。然而,它是通过数据大小而不是行数来实现的。例如:
stdbuf -o 1K 10msApp | visualizer
如果visualizer
还缓冲其输入,您可能还需要使用 来运行它stdbuf -i
。
stdbuf
也有行缓冲-o L
,但据我所知,你无法调整缓冲区中的行数。