当前位置: 技术问答>linux和unix
write后不fsync,为什么仍然能read成功?
来源: 互联网 发布时间:2017-04-27
本文导语: 理论上write进缓冲区高速缓存,要过一段时间等待update或者缓冲区满才写磁盘吧。为什么我write以后,直接read一点问题都没有呢?看别人做APUE上面这个地方的测试,fsync后read都无效,我的怎么不fsync,read都OK,给跪啊...
理论上write进缓冲区高速缓存,要过一段时间等待update或者缓冲区满才写磁盘吧。为什么我write以后,直接read一点问题都没有呢?看别人做APUE上面这个地方的测试,fsync后read都无效,我的怎么不fsync,read都OK,给跪啊。。。
没有O_*SYNC等标志。
Linux version 3.10.12-100.fc18.x86_64 (mockbuild@bkernel02) (gcc version 4.7.2 20121109 (Red Hat 4.7.2-8) (GCC) ) #1 SMP Mon Sep 16 13:05:36 UTC 2013
没有O_*SYNC等标志。
Linux version 3.10.12-100.fc18.x86_64 (mockbuild@bkernel02) (gcc version 4.7.2 20121109 (Red Hat 4.7.2-8) (GCC) ) #1 SMP Mon Sep 16 13:05:36 UTC 2013
|
POSIX requires that a read(2) which can be proved to occur after a
write() has returned returns the new data. Note that not all
filesystems are POSIX conforming.
楼主说的现象应该是完全不存在的,write只要返回值表明已经写入内核,那么read就可以读到。至于内核何时将数据写入磁盘,那是pdflush另一码事。
write() has returned returns the new data. Note that not all
filesystems are POSIX conforming.
楼主说的现象应该是完全不存在的,write只要返回值表明已经写入内核,那么read就可以读到。至于内核何时将数据写入磁盘,那是pdflush另一码事。