2010-09-24 41 views
1

我正在使用運行linux的嵌入式系統。我在嵌入式目標上使用了ramdisk文件系統。 我的應用程序捕獲實時數據,並對此ramdisk fs.s中的文件執行Standard C「fwrite」。由於內存數量有限,我想爲此文件設置最大大小,並導致fwrite像環繞循環緩衝區。有沒有辦法以對應用程序透明的方式執行此操作? 當我遷移到具有更大容量的存儲設備(eSATA)上的文件系統時,我更希望應用程序保持不變。使用fwrite製作文件環繞

回答

2

有沒有內置的方法來實現這一點。

最好的選擇可能是編寫一個小的包裝函數,該函數負責處理文件寫入操作,同時保持寫入的字節數。

一旦它達到您設置的最大尺寸,應該調用rewind()(或fseek()等)返回到文件的開頭。


這可能是更容易使用mmap()內存映射文件,然後把它像一個循環緩衝區。但是你又需要自己實現包裝。

+1

對於mmap(),請參閱http://en.wikipedia.org/wiki/Circular_buffer#Optimization – 0x6adb015 2011-02-10 21:17:40