当前位置: 技术问答>linux和unix
如何确定数据已经被写到磁盘上(不是被缓存)?
来源: 互联网 发布时间:2016-04-16
本文导语: 采用缓冲技术时,内核会把要写入磁盘的数据放在缓冲区中,然后在它认为合适的时候写入磁盘,怎样才能确定数据已经被写到磁盘上了呢?谢谢大家。 | 从实现机制来说,一般都会有有dirty...
采用缓冲技术时,内核会把要写入磁盘的数据放在缓冲区中,然后在它认为合适的时候写入磁盘,怎样才能确定数据已经被写到磁盘上了呢?谢谢大家。
|
从实现机制来说,一般都会有有dirty标志或者类似的标志。凡是缓存中的数据和对应的存储介质上的数据不一致,那么就会dirty标志会置为1,当数据被写到存储介质后,dirty标志会被清0.这个你去读Linux的源码可以看到。检查缓存链上各个单元的dirty标志可以找到你要的答案。
|
好像有些函数并不是 异步的,比如write()
如果突然断电,会有内容写不进去的。
如果突然断电,会有内容写不进去的。
|
兄弟,你这样,当你打算写进去的时候就写syns这是确保把内存写到硬盘上的。