我使用mmap
将文件F映射到块B,然后我只写了B的一个字节。
如果我用MS_SYNC为B调用msync(),操作系统是否将所有块写入F?或者它只将修改的一个字节写入F?
答案 0 :(得分:1)
这是特定于操作系统和体系结构的,但很可能只将脏页写入磁盘。
答案 1 :(得分:0)
特定系统上的手册页说什么?如果它不是开源的,那就是你必须要做的最好的事情,除非你能找到更适合你UNIX平台的详细文档。
在至少一个系统上,man msync说:
msync()系统调用将修改后的整个页面写回 文件系统并更新文件修改时间。只有那些页面 将检查包含addr和len-1后续位置的内容。