2010-09-16 117 views
0

我想使用curl從遠程服務器獲取流,並將其寫入緩衝區。到目前爲止,我只是做了curl http://the.stream>/path/to/thebuffer。事情是我不希望這個文件變得太大,所以我希望能夠刪除文件的第一個字節,因爲我同時添加到最後一個字節。有沒有辦法做到這一點?在bash中創建滾動緩衝區

或者,如果我可以寫n個字節緩衝區1,然後切換到緩衝區2,緩衝區3 ..到達緩衝區x時刪除緩衝區1並重新開始 - 而不會丟失從curl進來的數據(這是一個實時流,所以我不能停止捲曲)。我一直在閱讀卷頁和貓的手冊並閱讀,但看不到任何有希望的東西。

回答

1

沒有任何特別簡單的方法來做你想要做的事情。

也許最接近的方法創建一個FIFO,並將curl的輸出重定向到FIFO。然後你有一個程序,如splitcsplit讀取FIFO並寫入不同的文件。如果您決定拆分程序不是該工具,那麼您可能需要在其上編寫自己的變體。然後,您可以決定如何處理已創建的文件以及何時刪除它們。

請注意curl將掛起,直到從FIFO中讀取進程。當讀取FIFO的過程退出時,curl將收到一個SIGPIPE信號或一個寫入錯誤,其中任何一個都會使其停止。