共享内存

共享内存

是被多个进程共享的一部分物理内存.共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容.

 

共享内存实现分为两个步骤:

 1、创建共享、打开共享内存,使用shmget函数

 2、映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数

 3. 分离共享内存

 4. 控制、删除共享内存

 

shmget

函数的作用:在内核中创建共享你内存

函数的原型:int shmget(key_t key,int size,int shmflg)

函数的参数:shmflg:标志。同open()函数的权限位,也可以用八进制表示法

返回值:成功共享内存标识符

        出错 -1

头文件:#include<sys/opc.h>

        #include<sys/shm.h>

 

shmat

函数的作用:映射共享内存,映射到各自的内存空间

函数的原型:void *shmatint shmidconst void *shmaddrint flag);

函数的参数:shmid:内存标识符;

            shmaddr:将共享内存映射到本进程的指定地址,如果为NULL则由内核进行自动分配。

            shmflgSHM_RDONL表示共享内存只读;

                   0表示共享内存可读写;

返回值:被映射的段地址;

        出错 -1

头文件:#include<sys/types.h>

        #include<sys/ipc.h>

        #include<sys/shm.h>

 

shmdt

函数的作用:撤销内存共享内存的映射;

函数的原型:int shmdtconst void *shmaddr

函数的参数:shmaddr:被映射的共享内存地址

返回值:成功0;出错-1

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值