共享内存

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值