をどのように行うshmflg argument
にOR演算パーミッションモードビット[...] shmget
の
POSIXが既に指定されたキーの共有メモリ・セグメントがある場合のために、この質問に解釈するには少しトリッキーです?shmget
の行動に影響を与えるが、その意図は、それが動作することのようですopen()
と同様に、プロセスのuidとg idと要求されたモードがセグメントのuid、gid、およびパーミッションと矛盾する場合、関数は失敗します。具体的には、shmget()
関数は次の場合に失敗しなければならない
:shmflg
の下位9ビットで指定された共有メモリ識別子キーが、操作許可のために存在する[...] [...]付与されないであろう。
shmget()
のためのLinuxのmanページは、同様のテキストがあり、また、特に、共有メモリ・セグメントが既に存在する場合
は、権限が[...]確認されていることを述べています。
これはPOSIXと違いはありませんが、もっと明示的です。
Another section of POSIXは、読取り/書込みアクセスが許可されているか拒否されているかどうかを詳細に説明しています。
は、具体的にその検証は何を伴うのでしょうか?これらの許可フラグとセグメントの権限に許可の確認」のいずれかの種類を実行したshmgetしていますか?
はい、上方及びリンクPOSIX仕様で説明したように。
shmflg
の下位9ビットで指定された操作許可が何であるかはわかりませんが、呼び出し元のプロセスが作成していた場合にその呼び出し元プロセスが持つ権限を意味すると解釈できますそれは本当に意味すると思うshmflag
でオンになっているすべてのモードビットもセグメントの権限フィールドにオンになっています。