System V IPC(linux进程与线程学习笔记)

 System V IPC
 
    IPC对象包含:共享内存、消息队列和信号灯集
    
    每个IPC对象有唯一的ID
    
    IPC对象创建后一直存在,直到被显式地删除
    
    每个IPC对象有一个关联的KEY
    
    ipcs/ipcrm
    
 System V IPC - flok
 
    #include<sys/types.h>
    #include<sys/ipc.h>
    
    key_t ftok(const char *path,int proj_id);
    
    成功时返回合法的key值,失败时返回EOF
    
    path存在且可访问的文件的路径
    
    proj_id 用于生成key的数字,不能为0
    
 共享内存 
    
    共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,
    而不需要任何数据的拷贝
    
    共享内存在内核空间创建,可被进程映射到用户空间访问,使用灵活
    
    由于多个进程可同时访问共享内存,因此需要同步和互动机制配合使用
    
 共享内存使用步骤
 
    创建/打开共享内存
    
    映射共享内存,即把指定的共享内存映射到进程的地址空间用于访问
    
    读写共享内存
    
    撤销共享内存映射
    
    删除共享内存对象
    
 共享内存创建 - shmget
 
    #include<sys/ipc.h>
    #include<sys/shm.h>
    
    int shmget(key_t key,int size,int shmflg);
    
    成功时返回共享内存的id,失败时返回EOF
    
    key 和共享内存关联的key,IPC_PRIVTE或ftok生成
    
    shmflg共享内存标志位IPC_CREAT|0666

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值