名 前
shmat, shmdt − System V 共 有 メ モ リ ー (shared memory) の 操 作
書 式
#include
<sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
int shmdt(const void *shmaddr);
説 明
shmat()
shmat() は shmid で 指 定
さ れ た System V 共 有
メ モ リ ー セ グ
メ ン ト (shared memory segment) を
コ ー ル し た プ
ロ セ ス の ア ド
レ ス 空 間 に 付
加 (attach) す る 。 付
加 す る ア ド レ
ス は shmaddr に 以 下
の ど れ か の 形
式 で 指 定 す る :
* |
shmaddr が NULL な ら ば 、 シ ス テ ム は セ グ メ ン ト を 付 加 す る た め の 適 切 な (使 用 さ れ て い な い ) ア ド レ ス を 選 択 す る 。 | ||||||||||||||||||||
* |
shmaddr が NULL で な く SHM_RND が shmflg に 指 定 さ れ て い る 場 合 は 、 shmaddr を SHMLBA の 倍 数 へ と 切 り 捨 て た (rounding down) の と 等 し い ア ド レ ス へ 付 加 す る 。 そ の 他 の 場 合 は shmaddr は 付 加 を 行 な う ア ド レ ス で 、 ペ ー ジ 境 界 を 指 し て い る 必 要 が あ る 。 SHM_RND
に 加 え て 、 以
下 の フ ラ グ を
shmflg ビ ッ ト マ ス
ク 引 き 数 に 指
定 で き る 。 shm_atime に は 現 在 の 時 刻 を 設 定 す る 。 shm_lpid に は 呼 び 出 し た プ ロ セ ス の プ ロ セ ス ID が 設 定 さ れ る 。 shm_nattch を 1 増 加 さ せ る 。 shmdt() shm_dtime に は 現 在 の 時 刻 が 設 定 さ れ る 。 shm_lpid に は 呼 び 出 し た プ ロ セ ス の プ ロ セ ス ID が 設 定 さ れ る 。 shm_nattch を 1 減 少 さ せ る 。 も し 0 に な り 、 削 除 マ ー ク が あ っ た 場 合 は そ の セ グ メ ン ト は 削 除 さ れ る 。 返 り 値shmat() は 、 成 功 し た 場 合 、 付 加 さ れ た 共 有 メ モ リ ー セ グ メ ン ト の ア ド レ ス を 返 す 。 エ ラ ー の 場 合 、 (void *) −1 を 返 し 、 errno に エ ラ ー の 原 因 を 示 す 値 を 設 定 す る 。 shmdt() は 、 成 功 す る と 0 を 返 す 。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno に エ ラ ー の 原 因 を 示 す 値 を 設 定 す る 。 エ ラ ーshmat() が 失 敗 し た 場 合 、 errno に 以 下 の 値 の ど れ か を 設 定 し て 返 す :
CAP_IPC_OWNER ケ ー パ ビ リ テ ィ (capability) が な い 。
|