4

私は を使用してshmgetおりshmatshmctlそれぞれ共有メモリ セグメントを取得および作成し、プロセスのアドレス空間にアタッチして削除します。

プロセスが共有メモリセグメントを切り離して使用できるかどうか疑問に思っています

shmctl(id, IPC_RMID, ...)

1つのプロセスで。

man ページから情報を取得できません。

IPC_RMID破棄するセグメントをマークします。セグメントが実際に破棄されるのは、最後のプロセスがセグメントを切り離した後 (つまり、shm_nattch関連付けられた構造体のメンバーshmid_dsがゼロのとき) だけです。呼び出し元は、所有者または作成者であるか、特権を持っている必要があります。 セグメントが破棄対象としてマークされている場合、によって取得された関連データ構造内のフィールドの (非標準)SHM_DESTフラグが設定されます。shm_perm.modeIPC_STAT

4

1 に答える 1

1

Linux では、既に削除対象としてマークされている場合でも、共有メモリ セグメントをアタッチすることができます。ただし、POSIX.1-2001 ではこの動作が指定されておらず、他の多くの実装ではサポートされていません。

于 2012-12-19T08:44:50.940 に答える