kazmax - Linux で自宅サーバー

msync - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 可用性
  7. 準拠
  8. 関連項目

名前

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 システムでは _POSIX_MAPPED_FILES_POSIX_SYNCHRONIZED_IO の両方が <unistd.h> で 0 より大きい値に定義される。 (   sysconf (3) を参照すること。 )

準拠

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

関連項目

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