Unix-system-calls-msync

提供:Dev Guides
移動先:案内検索

[top]#

|http://www.google.com/[Google] | a|

Web This Site
  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

[cols=",,,,,,,",]

| |  Home   | |  References   | |  Discussion Forums   | |  About TP  

[width="100%",cols="100%",]

a| == msync()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

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は、同じファイルの他のマッピングを無効にするように要求します(書き込みたばかりの新しい値で更新できるようにするため)。

返り値

成功すると、ゼロが返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

Tag Description
EINVAL start is not a multiple of PAGESIZE; or any bit other than MS_ASYNC
MS_INVALIDATE MS_SYNC is set in flags; or both MS_SYNC and MS_ASYNC are set in flags.
ENOMEM The indicated memory (or part of it) was not mapped.

可用性

*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に変更されました。

関連項目

B.O. Gallmeister、POSIX.4、O’Reilly、pp。 128-129および389-391。 [[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

|  

[cols="^",]

|Advertisements