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

廣告


  

廣告



廣告
© . All rights reserved.