共享内存
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