假设我在不执行fsync的情况下将块写入文件描述符,然后在一段时间后从同一个描述符中读取相同的块.我保证会收到相同的信息吗?
该程序是单线程的,任何其他进程都不会随时访问该文件.
解决方法:
是的,它由操作系统保证.
即使修改尚未进入磁盘,操作系统也会使用其缓冲区缓存来反映文件修改并保证读取和写入的原子性级别,以及所有进程.因此,不仅您的流程,而且任何其他流程,都能够看到更改.
至于fsync(),它只指示操作系统尽力将内容刷新到磁盘.另请参见fdatasync().
另外,我建议你使用两个文件描述符:一个用于阅读,另一个用于写入.