【发布时间】:2011-10-05 15:53:22
【问题描述】:
我正在开发一个运行 linux 的智能相机。我从相机流媒体软件捕获图像并将图像写入 SD 卡(与相机相连)。为了编写单个 JPEG 图像,我使用了 fopen 和 fwrite C 函数。为了同步磁盘写入操作,我使用 fflulsh(pointer) 刷新缓冲区并将数据写入 SD 卡。但它似乎没有效果,因为写操作使用系统内存并且每次写操作后内存都会减少。我也结合fsync(filedesc)使用了低级的open和write函数,但同样没有效果。
只有在我卸下 SD 卡然后释放内存时才会刷新缓冲区。如何禁用此缓存写入而不是 SD 卡写入?或者如何强制将数据同时写入SD卡而不是使用系统内存?
【问题讨论】:
-
fsync(2)应该做你想做的事,除非 SD 卡驱动程序有错误,或者你启用了写入缓存。