使用 shmat 子例程创建共享内存段
本节描述如何使用 shmat 子例程创建共享内存段
必备任务或先决条件
无。
PROCEDURE
- 创建一个关键字以唯一地标识该共享段。 使用 ftok 子例程来创建密钥。 例如,要创建密钥mykey使用项目标识R包含在变量中proj(类型为 char) 和文件名 null_file,使用类似如下的语句:
mykey = ftok( null_file, proj );
- 或者:
- 使用 shmat 子例程将共享段连接到进程。 例如,要连接以前创建的段,请使用如下语句:
在此示例中,变量ptr是指向定义共享段中的字段的结构的指针。 使用该模板结构以在共享段中存储并检索数据。 对于所有使用该段的进程,该模板应该是相同的。ptr = shmat( mem_id, 0, 0 );
- 使用模板结构处理段中的数据。
- 使用 shmdt 子例程从段拆离:
shmdt( ptr );
- 如果不再需要共享段,请使用 shmctl 子例程将其从系统中除去:
shmctl( mem_id, IPC_RMID, ptr );
注: 您还可以使用 ipcs 命令获取有关段的信息,使用 ipcrm 命令除去段。