Unix 进程间通信与相关操作详解
1. 共享内存操作
1.1 分离共享内存
shmdt函数用于将进程与共享内存段分离,其语法如下:
int shmdt(void *shmaddrspc);其中,shmaddrspc表示通过调用shmat()函数获得的与内存段关联的地址空间。函数调用成功时返回 0,失败则返回 -1。
1.2 修改共享内存段的权限
要修改共享内存段的权限和其他特性,可以使用shmctl()函数,其语法为:
int shmctl(int shmemid, int cmd, struct shmid_ds *buf);shmctl()函数参数说明如下表:
| 参数 | 描述 |
| ---- | ---- |
| shmemid | 共享内存段的 ID |
| cmd | 要应用于内存段的命令,如SHM_LOCK(锁定指定共享内存段)、SHM_UNLOCK(解锁共享内存段)、IPC_STAT(返回控制结构中的状态信息并放入buf指向的缓冲区)、IPC_SET