shmctl(2) 用于更改共享内存段的权限和其他特性。 cmd 参数为以下控制命令之一。
锁定内存中的指定共享内存段。 进程必须具有超级用户的有效 ID,才能执行此命令。
解除锁定共享内存段。 进程必须具有超级用户的有效 ID,才能执行此命令。
返回控制结构中包含的状态信息,并将其放入 buf 指向的缓冲区中。 进程必须具有段的读取权限,才能执行此命令。
设置有效的用户和组标识以及访问权限。 进程必须具有属主、创建者或超级用户的有效 ID,才能执行此命令。
删除共享内存段。 进程必须具有属主、创建者或超级用户的有效 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); ...