Linuxの共有メモリに関する質問です。mmap関数でMAP_SHAREDフラグを指定して、複数のプロセスが同じファイルをマッピングする場合を想定しています。

この場合、メモリマップされた領域に対する変更が、他プロセスのメモリマップされた領域に反映されることを保障するには、msync関数を呼び出さなければならないのでしょうか?
それとも、msync関数はあくまでもディスクに対する書込だけなので、プロセス間通信には影響が無い(msync関数はいらない)と考えて良いのでしょうか?後者のような気がするのですが……というか複数プロセスが同じメモリアドレスを見ている気もするのですが……それを示す資料が見つかりません。
あと、自分の手元にはUNIXネットワークプログラミングVol.1,2があるので、この本を利用した解説でも構いません。よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:2006/08/30 15:11:09
  • 終了:2006/09/06 15:15:03

回答(0件)

回答はまだありません

  • id:ttamo
    ご想像のとおり、「共有」は「共有」のようです。
    http://www.linux.or.jp/JM/html/LDP_man-pages/man2/mmap.2.html

    msync しなくても、すべての共有プロセスで同じものを見ているので同期するはずです。

    msync しないと、MS_INVALIDATE で msync したときに変更が消えちゃうかもしれない...というのは当然ですが。

  • id:lichten
    ありがとうございます。"ファイルへの書き込みと等価である。"なんて書いてあって、不安を覚えたのですが、誰かに首肯して頂けると安心できます。
    (しかし何故コメントなのでしょうか……回答ならば即イルカ指定なのですが)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません