3

mmapand flagを使用してファイルをメモリマップした後MAP_PRIVATE、同じプロセスで基になるファイルに変更を加えるとどうなりますか? mmapメモリは変更を反映しますか?

Linux の場合、man ページには次のように記載されています。

MAP_PRIVATE: プライベート コピー オン ライト マッピングを作成します。マッピングの更新は、同じファイルをマッピングする他のプロセスには表示されず、基礎となるファイルには反映されません。mmap() 呼び出し後にファイルに加えられた変更が、マップされた領域に表示されるかどうかは指定されていません。

したがって、Linux では、答えは「未指定」です。

ただし、Mac OS X では次のように表示されます。

MAP_PRIVATE: 変更は非公開です (コピー オン ライト)。

変更を行ってもプライベート マッピングに影響しないことを示すように見える簡単なサンプル ツールを作成しました。しかし、これ以外の証拠はありません。

4

0 に答える 0