编程接口指南

控制共享内存段

shmctl(2) 用于更改共享内存段的权限和其他特性。 cmd 参数为以下控制命令之一。

SHM_LOCK

锁定内存中的指定共享内存段。 进程必须具有超级用户的有效 ID,才能执行此命令。

SHM_UNLOCK

解除锁定共享内存段。 进程必须具有超级用户的有效 ID,才能执行此命令。

IPC_STAT

返回控制结构中包含的状态信息,并将其放入 buf 指向的缓冲区中。 进程必须具有段的读取权限,才能执行此命令。

IPC_SET

设置有效的用户和组标识以及访问权限。 进程必须具有属主、创建者或超级用户的有效 ID,才能执行此命令。

IPC_RMID

删除共享内存段。 进程必须具有属主、创建者或超级用户的有效 ID,才能执行此命令。

 

 

以下代码说明了 shmctl(2)

#include			<sys/types.h>

#include			<sys/ipc.h>

#include			<sys/shm.h>

...

 int		cmd;		/* command code for shmctl() */

 int		shmid;	/* segment ID */

 struct shmid_ds	shmid_ds; /* shared memory data structure to

 									hold results */

 	...

 	shmid = ...

 	cmd = ...

 	if ((rtrn = shmctl(shmid, cmd, shmid_ds)) == –1) {

 		perror("shmctl: shmctl failed");

 		exit(1);

 	...