共享内存

2017-02-09  本文已影响0人  8dc010427b39

创建共享内存区
int shmget(key_t key , size_t size , int shm-flg);

参数:

flags--------IPC_CREAT | 0666   建立加读写权限

ipcs -m 可以显示已经成功创建一块共享内存,nattch字段显示已经附加到这个内存区的进程数


附加到共享内存区

void *shmat(int shmid,const void *shmaddr,int shmflg)

char buf[1024];

char *mem=shmat(shid,0,0);//第一个参数是共享内存的id  一般第二个参数和第三个参数会填0,第二个参数填buf表示共享内存会与buf绑定,返回共享内存地址给mem


多个程序读写共享内存

进程1:

char *buf = shmat(shid, NULL, 0);

strcpy(buf,"hello\n");

进程2:

char *buf = shmat(shid, NULL, 0);

printf("%s\n",buf);


分离共享内存

int shmdt(const void *shmaddr)

shmdt(buf);


共享内存查看命令

查看共享内存  ipcs

杀死共享内存  ipcsrm  共享内存ID

上一篇下一篇

猜你喜欢

热点阅读