msync()如何工作?

时间:2013-04-06 15:48:28

标签: unix

我使用mmap将文件F映射到块B,然后我只写了B的一个字节。 如果我用MS_SYNC为B调用msync(),操作系统是否将所有块写入F?或者它只将修改的一个字节写入F?

2 个答案:

答案 0 :(得分:1)

这是特定于操作系统和体系结构的,但很可能只将脏写入磁盘。

答案 1 :(得分:0)

特定系统上的手册页说什么?如果它不是开源的,那就是你必须要做的最好的事情,除非你能找到更适合你UNIX平台的详细文档。

在至少一个系统上,man msync说:

  

msync()系统调用将修改后的整个页面写回   文件系统并更新文件修改时间。只有那些页面   将检查包含addr和len-1后续位置的内容。