我想在Linux(2.6.31)中对sync(8)和fsync函数的功能有更多的说明。它确保文件被写入相应的存储?fsync,sync:它真的做它应该做的吗?
回答
http://linux.die.net/man/8/sync
它不确保文件被写入到相应的存储。它只确保将缓存/缓存的数据刷新到磁盘设备。无论这是SD卡还是其他什么都没关系。
待更确切地说,它将数据刷新到设备,但设备通常具有自己的缓存层,所以在刷新后它可能仍然不在持久存储器中(即,它可能在磁盘的缓存中,但还没有在盘片/闪存)。这意味着如果您的电源关闭,您仍然可能会丢失数据。 –
更确切地说,这取决于。如果你有一个支持障碍的fs,并且启用了这些障碍,那么sync()/ fsync()和其他一些操作将导致相应的CACHE FLUSH(ATA)或SYNCHRONIZE CACHE(SCSI)命令被发送到设备。当然,设备需要合理地执行这些命令。 – janneb
如果有问题的设备(SD卡/ MMC驱动程序)维护它自己的缓存层,它会在哪里?我将能够调试此图层吗? – shinymetal
- 1. JButton没有做它应该做的事
- 2. NSOutlineView没有做它应该做的它的子类
- 3. Ajax抛出失败函数...但它做它应该做的事
- 4. HierarchicalDataTemplate它应该做什么?
- 5. pd.sort_values没有做它应该
- 6. 取消绑定不做它应该的
- 7. 为什么WinRT MediaElement.SetSource不会做它应该做的事情?
- 8. git checkout没有做它应该做的事
- 9. 定制_StoreMixin为dGrid没有做它应该做的
- 10. 简单挂钩菜单没有做它应该做的
- 11. 科尔多瓦白名单不做它应该做的事情?
- 12. 控制器没有做它应该做的?
- 13. Ajax.BeginForm没有做它应该做的事情?
- 14. AsyncTask onPostExecute没有做它应该做的一切
- 15. Java循环没有做它应该做的事
- 16. 为什么这个jQuery单行程做它应该做的?
- 17. 为什么这个下拉列表做它应该做的?
- 18. 我通过引用并没有做它应该做的事
- 19. php unset()它真的做了什么?
- 20. Flex HTTPService.disconnect()它应该做什么?
- 21. Magento DHL模块,它应该做什么?
- 22. 程序没有做它应该 - Visual C
- 23. 这是渴望加载做我认为它应该做什么?
- 24. 如果其他语句做了它应该做的反应! Java的
- 25. 当它不应该变成真时,它变成了真的
- 26. 我应该在这种情况下真的做出子类吗?
- 27. 不知道我的查询是否正在做它应该做的事
- 28. 桑达替换没有做什么,我想,并认为它应该做的
- 29. 一种方法来测试prepareForSegue是否做它应该做的事
- 30. URL重写不做它应该做的事情,但代码看起来很好
为什么会这样怀疑? – Rohan
因为我在写入SD卡后遇到问题。这里是链接http://stackoverflow.com/questions/12262044/sd-card-data-sometimes-not-seen-on-pc-when-connected-in-usb-mass-storage-mode-v – shinymetal