2017-02-27 10 views
0

プロセスがアドレス空間内の匿名でマップされたページでfork()を呼び出し、子プロセスがページを変更した後、子プロセスの匿名マップページは基本的にメモリマップページのように動作しますか?匿名のマップページとfork()?

+0

また)(MMAPを使用してプロセス間のメモリを共有する[、[すべてのプロセスでのmmap共有メモリをしていますか?](http://stackoverflow.com/q/11738703/608639)を参照してください](http://stackoverflow.com/q/4991533/608639)、[匿名の共有マッピングの読み書き方法](http://stackoverflow.com/q/31305015/608639)など – jww

答えて

0

フラグはmmapに渡されます。 MAP_SHAREDが指定されている場合、マップされたページは共有されます。 MAP_PRIVATEの場合、マップされたページは共有されません。各フォークされたプロセスは独自のコピーを取得します。

MAP_SHAREDとMAP_PRIVATEは、メモリ・オブジェクトへの書き込み 参照の配置を記述する。 MAP_SHAREDが指定されている場合は、 の参照は、基になるオブジェクトを変更します。 MAP_PRIVATEが01​​である場合、呼び出し元プロセス によってマップされたデータを変更することは、呼び出し元のプロセスにのみ表示され、基礎オブジェクトである を変更してはならない。 MAP_PRIVATEマッピングの後に行われる 基礎オブジェクトの変更が に設定されているかどうかは、MAP_PRIVATEマッピングによって確認できます。 MAP_SHAREDまたは MAP_PRIVATEのいずれかを指定できますが、両方を指定することはできません。マッピングタイプは で、fork()に保持されます。

POSIX.1-2001: mmap