MSYNC

Section: Linux Programmer's Manual (2)
Updated: 2020-06-09
Index JM Home Page
 

名前

msync - ファイルをマップしたメモリーと同期させる  

書式

#include <sys/mman.h>

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

説明

msync() は mmap(2) を使ってメモリーにマップされたファイルの、 メモリー上のコピーになされた変更をファイルシステムに反映させる。 この関数を使用しないと、 munmap(2) が呼び出されるまで変更が書き戻される保証はない。 より正確には、ファイルのうち addr から始まり長さ length のメモリー領域に対応する部分が更新される。

The flags argument should specify exactly one of MS_ASYNC and MS_SYNC, and may additionally include the MS_INVALIDATE bit. These bits have the following meanings:

MS_ASYNC
Specifies that an update be scheduled, but the call returns immediately.
MS_SYNC
Requests an update and waits for it to complete.
MS_INVALIDATE
Asks to invalidate other mappings of the same file (so that they can be updated with the fresh values just written).
 

返り値

成功した場合、 0 が返る。エラーの場合、 -1 が返り、 errno が適切に設定される。  

エラー

EBUSY
I flags に MS_INVALIDATE が指定されたが、指定されたアドレス範囲にロックが存在する。
EINVAL
addr が PAGESIZE の倍数でない。または、 flags に MS_ASYNC、MS_INVALIDATE、MS_SYNC 以外のビットが設定された。 または、 flags に MS_SYNC と MS_ASYNC の両方が設定された。
ENOMEM
指定されたメモリー (またはその一部) がマップされていない。
 

準拠

POSIX.1-2001, POSIX.1-2008.

この関数は Linux 1.3.21 で導入されたが、 ENOMEM ではなく EFAULT が使われていた。 これは Linux 2.4.19 で POSIX における値 ENOMEM に変更された。

msync() が使用可能な POSIX システムでは _POSIX_MAPPED_FILES と _POSIX_SYNCHRONIZED_IO の両方が <unistd.h> で 0 より大きい値に定義される。 (sysconf(3) を参照すること。 )  

注意

POSIX では MS_SYNC と MS_ASYNC のいずれかは必ず flags に指定しなければならないとされており、 実際にこれらのフラグのいずれかを指定しなかった場合 msync() が失敗するシステムもある。 しかし、 Linux ではこれらのフラグのいずれも指定せずに msync() を呼び出すことができ、 その場合の動作は (現在のところ) MS_ASYNC を指定した場合と等価である。 (Linux 2.6.19 以降では MS_ASYNC は実際には no-op (何もしない命令) である。 これはカーネルが正しく dirty ページを追跡し、必要に応じてストレージにそれらをフラッシュするからである。) Linux の動作に関係なく、アプリケーションの移植性を考慮し、将来も確実に動くようにするには、 MS_SYNC か MS_ASYNC のいずれかを必ず flags に指定するようにすべきである。  

関連項目

mmap(2)

B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

メモリー   マップ   msync   update   両方   一部   実際   フラグ   同期   mman   size   コピー   ファイルシステム   反映   保証   正確   領域   argument   specify   exactly   additionally   These   bits   following   meanings

Linux マニュアル 一覧

関連するコマンド・関数

memccpy.3   mmap.2   munmap.2   mmap64.3   shm_overview.7   ypmatch.1
 

Index

名前
書式
説明
返り値
エラー
準拠
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:01 GMT, October 11, 2026