LINUX学习笔记——进程间通信3共享内存

社区服务
高级搜索
猴岛论坛电脑百科LINUX学习笔记——进程间通信3共享内存
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
2个回复

LINUX学习笔记——进程间通信3共享内存

楼层直达
小天°

ZxID:6660801

等级: 元老

举报 只看楼主 使用道具 楼主   发表于: 2012-03-23 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)
本帖de评分: 1 条评分 DB +10
DB+10 2012-03-23

多谢分享,电脑技术版块欢迎你。


技术永无止境,吹嘘只会自我堕落,难成大器!

技术组只要求两点,只要求做事踏实一点,遇事冷静一点。其他自由发挥。

忆海三千梦沧澜

ZxID:15934394

等级: 元帅
 你心里我永不及他

举报 只看该作者 沙发   发表于: 2012-03-23 0
多谢分享,电脑技术版块欢迎你。
世界上最灿烂的不是阳光,而是心动女生的微笑。
初颜°Am▲

ZxID:3055

等级: 禁止发言

举报 只看该作者 板凳   发表于: 2012-03-24 0
谢谢分享 
« 返回列表
发帖 回复