man pages
のshmctl()
については、Linuxで混乱しています。私は次のコマンドを使用します:shmctl (id , IPC_RMID , 0)
共有セグメントを削除します。 man pages
はメモリの寿命について矛盾しているようです。共有メモリセグメントをshmctlで削除する
man pages状態:
IPC_RMID
マークセグメントが破壊されます。セグメントは、最後のプロセスがデタッチした後(つまり、関連する構造体shmid_dsの shm_nattchメンバがゼロのとき)にのみ実際に破棄されます。 発信者は所有者または作成者であるか、特権を持っている必要があります。セグメント が破棄マークされている場合、IPC_STATによって で検索された関連するデータ構造内のshm_perm.modeフィールドの(非標準)SHM_DESTフラグ が設定されます。
私が正しいだ場合、私はこれがあなたの両方が共有メモリにアタッチ二つのプロセス、(Process1
とProcess2
それらを呼び出すことができます)を持っている場合、Process1
は、共有メモリを作成して添付し、切り離し、共有を破壊する可能性を意味信じますメモリに格納され、最終的に終了します。その後、メモリは、Process2
もデタッチするまで存在します。
これは間違いありませんか?
第二に、この文を何man pages
平均:
呼び出し側は、セグメントが最終的に破壊されていることを確認する必要があります。 それ以外の場合は、フォールトインしたページはメモリに残るか、 スワップに残ります。これは、それが削除対象のセグメントをマークするので、他のすべてのプロセスが削除されるメモリを確保するために切り離されるまでブロックするために必要があるだろう、
Process1
のように思われてしまう
。しかし、これは上記の陳述と矛盾しているようです。私はまた、これがどのように行われるのか分からないので(もしそれが行われると仮定されている)、そうであれば、これについてどうやって行くのか説明することができますか?