IPC——共享内存

a) 意义:多个进程共享一部分物理内存。访问快,方便 b) 先创建共享内存:int shmget(key_t key, int size, int shmflg) 1. Key:标志共享内存的键值;0/IPC_PRIVATE a) Key=0 ...
a)         意义:多个进程共享一部分物理内存。访问快,方便
 
b)         先创建共享内存:int shmget(key_t key, int size, int shmflg)
 
1.         Key:标志共享内存的键值;0/IPC_PRIVATE
 
a)         Key=0:本不创建,但若shmflg仍为IPC_PRIVATE则仍创建
 
2.         Size:大小
 
3.         Shmflg:标志 一般S_IRUSR|S_IWUSR
 
4.         返回值:成功返回共享内存标志符;失败返回-1;
 
5.         #include<sys/ipc.h>,#include<sys/shm.h>,#include<sys/types.h>,#include<sys/stat.h>
 
c)         再映射共享内存:
 
1.         Int shmat(int shmid, char *shmaddr, int flag)
 
a)         Shmid:shmget函数返回的共享存储标识符
 
b)         Shmaddr:是用来保存映射地址,若是0:表述系统自动找地址,通过返回值来得到
 
c)         Flag:决定以什么方式来确定映射的地址(通常是0)
 
d)         返回值:shmaddr=0时,成功返回共享内存映射到进程中的地址;失败返回-1
 
2.         共享内存映射到不同进程,地址不同
 
d)         清除内容:得到地址后需要先把这个内存区重置数据
 
1.         memset(p_addr,’\0’,1024):1024个字节全部重置为
 
a)         #include<string.h>
 
e)         拷贝内容:strncpy(p_addr, argv[1],1024)
 
f)          解除映射:int shmdt(char *shmaddr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值