共享内存

1.共享内存是被多个进程共享的一部分物理内存.共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存
区域写入了数据,共享这个内存区域的所有进程就可以立刻
2.看到其中的内容。
共享内存实现分为两个步骤:
(1)创建共享、打开共享内存,使用shmget函数。
(2)映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。 
(3)分离共享内存。 
(4)控制、删除共享内存。
3.共享内存实现的步骤:
(1)创建共享内存,这里用到的函数是shmget,也就是从内存中获得一段共享内存区域。
(2)映射共享内存,也就是把这段创建的共享内存映射到具体的进程空间中去,这里使用的函数是shmat。
(3)到这里,就可以使用这段共享内存了,也就是可以使用不带缓冲的I/O读写命令对其进行操作。
(4)撤销映射的操作,其函数为shmdt。 
4.有关共享内存操作的几个函数:
(1) shmget
 函数的作用:创建共享内存
 函数的原型:int shmget(key_t key, int size, int shmflg);
 函数的参数:key: 键值,多个进程可以通过访问它访问同一个共享内存,其中有个特殊值IPC_PRIVATE,它用于创
建当前进程的私有共享内存。
                size:内存大小;
                      shmflg:open函数的权限位
  返回值: 成功,返回共享内存标识符;失败-1;
  头文件: #include <sys/ipc.h>
           #include <sys/shm.h>
           #include  <sys/types.h>
(2)shmat
 函数的作用:映射共享内存到各自的进程
 函数的原型:char * shmat(int shmid, char *shmaddr, int flag);
 函数的参数:shmid:shmget函数返回的共享存储标识符;
                      shmaddr:指定的共享内存映射的地址;如果是NULL,有内核自动分配;
                      flag:决定以什么方式来确定映射的地址,通常是0,0表示可读写,SHM_RDONLY共享内存只读;
 返回值:成功返回映射的地址,出错-1;
 
 (3)shmdt
 函数的作用:从进程中分离共享内存;
 函数的原型:int shmdt(const char *shmaddr);
 返回值: 成功是0,出错-1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值