在管道中缓冲无限量数据的实用程序?

Doc*_*r J 16 io pipe buffer

是否有一个实用程序可以让我坚持使用管道来解耦读取和写入速度?

$ producer | buf | consumer
Run Code Online (Sandbox Code Playgroud)

基本上,我想要一个实用程序buf,它尽可能快地读取其输入,将其存储在内存中,以便在尽可能快地运行的consumer同时producer度过美好的时光。

Dav*_*rtz 14

pv(管浏览器)实用程序可以做到这一点(有-B选项)和更多的事情,包括让你的进度报告。


Mic*_*jer 9

你可以使用dd

producer | dd obs=64K | consumer
Run Code Online (Sandbox Code Playgroud)

它在每个 unix 上都可用。

  • 这真的解耦了读写速度吗?看起来 `dd` 一次只存储一个块,所以它只会延迟生成块大小所需的时间;如果我错了,请纠正我。此外,这种缓冲可以扩展到无限大小,还是只为块大小输入任何内容? (3认同)

Ste*_*ski 7

看看mbuffer。它可以缓冲到内存或内存映射文件(-t/ -T)。