このコード行は何をしますか?
mmap(NULL, n, PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
nメモリのバイトのプライベートで書き込み可能な匿名マッピングを要求します。
fork()子と親が独立したマッピングを持つようになった後)。この場合、基本的nにメモリのバイトのブロックを要求しているため、ほぼ同等です(ただし、ではなくmalloc(n)で解放する必要があり、ページ境界で整列されます)。また、メモリが書き込み可能であることを要求していますが、読み取り可能であることは要求していませんが、通常、書き込み可能メモリと読み取り不能メモリは、基盤となるハードウェアでサポートされている組み合わせではありません。単独で要求された場合、POSIX では、実装が読み取りおよび/または実行可能なメモリを提供できます。munmap()free()PROT_WRITE
man mmapここであなたを助けます。
プロセスの仮想アドレス空間にメモリ マッピングを作成します。匿名マッピングを作成しています。これは、メモリのバイトmallocを割り当てるために使用するのと似ています。n
パラメータは次のとおりです。
NULL- カーネルはマッピング用のアドレスを選択しますn- マッピングの長さ (バイト単位)PROT_WRITE- ページを書き込むことができますMAP_ANON | MAP_PRIVATE- マッピングはファイルによってサポートされず、マッピングに書き込まれた更新はプロセスに対してプライベートです-1- ファイル記述子; マッピングがファイルによってサポートされていないため、使用されません0- マッピングを開始するファイル内のオフセット - ここでも、マッピングはファイルによってサポートされていないため、使用されません