在bash中创建一个滚动缓冲区

时间:2010-09-16 04:03:20

标签: bash curl shell

我想使用curl从远程服务器获取流,并将其写入缓冲区。到目前为止,我只做了curl http://the.stream>/path/to/thebuffer。事情是我不希望这个文件变得太大,所以我希望能够删除文件的第一个字节,因为我同时添加到最后的字节。有办法做到这一点吗?

或者,如果我可以将n个字节写入buffer1,然后切换到buffer2,buffer3 ..当达到缓冲区x时删除buffer1并重新开始 - 不会丢失来自curl的数据(这是一个实时流,所以我可以不要卷曲。我一直在阅读卷曲和猫的手册并阅读,但看不到任何有希望的东西。

1 个答案:

答案 0 :(得分:1)

没有任何特别简单的方法可以做你想做的事。

最近的方法可能会创建一个FIFO,并将curl的输出重定向到FIFO。然后,您有一个程序,如splitcsplit读取FIFO并写入不同的文件。如果您确定拆分程序不是该工具,则可能需要在它们上面编写自己的变体。然后,您可以决定如何处理创建的文件以及何时删除它们。

请注意,curl将一直挂起,直到从FIFO读取进程。当读取FIFO的进程退出时,curl将获得SIGPIPE信号或写入错误,其中任何一个都应该停止它。