msync() - Unix、Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

msync() - Unix、Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

msync - 将文件与内存映射同步

语法

#include <sys/mman.h>

int msync(void *start, size_t length, int flags);

描述

msync() 将使用 mmap(2) 映射到内存的文件的内存副本中所做的更改刷新回磁盘。如果不使用此调用,则无法保证在调用 munmap(2) 之前将更改写回。更准确地说,对应于从start开始且长度为length的内存区域的文件部分将被更新。flags 参数可以设置 MS_ASYNC、MS_SYNC 和 MS_INVALIDATE 位,但不能同时设置 MS_ASYNC 和 MS_SYNC。MS_ASYNC 指定安排更新,但调用立即返回。MS_SYNC 请求更新并等待其完成。MS_INVALIDATE 请求使相同文件的其他映射失效(以便它们可以使用刚刚写入的新值进行更新)。

返回值

成功时,返回 0。失败时,返回 -1,并且 errno 被相应地设置。

错误

标签描述
EINVAL start 不是 PAGESIZE 的倍数;或者在flags中设置了除 MS_ASYNC | MS_INVALIDATE | MS_SYNC 之外的任何位;或者在flags中同时设置了 MS_SYNC 和 MS_ASYNC。
ENOMEM 指示的内存(或其一部分)未映射。

可用性

在可使用 msync() 的 POSIX 系统上,<unistd.h> 中的 _POSIX_MAPPED_FILES_POSIX_SYNCHRONIZED_IO 都定义为大于 0 的值。(另请参阅 sysconf(3))。

符合标准

POSIX.1-2001。

此调用在 Linux 1.3.21 中引入,然后使用 EFAULT 而不是 ENOMEM。在 Linux 2.4.19 中,这更改为 POSIX 值 ENOMEM。

参见

B.O. Gallmeister,POSIX.4,O’Reilly,第 128-129 页和 389-391 页。

previous next Printer Friendly

广告


  

广告



广告