SHMAT(2) FreeBSD システムコールマニュアル SHMAT(2)
名称
shmat, shmdt − 共有メモリをアタッチまたはデタッチする |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <machine/param.h> void * |
shmat(int shmid, const void *addr, int flag); int |
shmdt(const void *addr); |
解説 |
shmat() システムコールは、 shmid によって識別された共有メモリセグメントを 呼び出しプロセスのアドレス空間にアタッチします。セグメントがアタッチされ るアドレスは次のように決定されます: |
• addr が 0 の場合、セグメントは、カーネルが選択したアドレスにアタッチされます。
• addr が 0 でなく、しかも SHM_RND が flag で指定されない場合、セグメン トは指定のアドレスにアタッチされます。 • addr が指定されており、しかも SHM_RND が指定されている場合、 addr は 最も近い SHMLBA の倍数に切捨てされます。 shmdt() は、 addr で指定されるアドレスにある共有メモリセグメントを、呼び 出しプロセスのアドレス空間からデタッチします。 戻り値 |
正常に完了すると、 shmat() はセグメントがアタッチされているアドレスを返し ます。そうでない場合は -1 が返され、エラーを示すために errno が設定されま す。 関数 shmdt() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。 |
エラー
shmat() システムコールは次の場合に処理を失敗します: |
[EINVAL]
shmid に対応する共有メモリセグメントが見つかりませんで した。 [EINVAL] shmdt() システムコールは次の場合に処理に失敗します: [EINVAL] 関連項目 |
FreeBSD 10.0 August 2, 1995 FreeBSD 10.0 |