System V共享内存区

要点

shell查看命令:ipcs -m

主要函数

#include <sys/shm.h>
//oflag=IPC_CREAT|IPC_EXCL|0644组合
//创建一个内存共享区
int shmget(key_t key, size_t size,int oflag);
 
//连接shmid对应的内存区,shmaddr指定接入进程的地址,返回值为共享内存地址
void *shmat(int shmid,const void *shmaddr,int flag);
 
//断开连接,类似close
int shmdt(const void *shmaddr);
 
//获取/设置属性,以及删除shmid标识
//IPC_RMID,IPC_SET,IPC_STAT
int shmctl(int shmid,int cmd,struct shmid_ds *buff);

例子

int id=shmget(ftok("/shmmsg",0),length,oflag);
char *ptr=shmat(id,NULL,0);
 
struct shmid_ds buff;
shmctl(id,IPC_STAT,&buff);
for(i=0;i<buff.shm_segsz;i++)
    *ptr++ = i % 256;
 
shmctl(id,IPC_RMID,NULL);
原文地址:https://www.cnblogs.com/cfans1993/p/5836255.html