Chinaunix首页 | 论坛 | 博客
  • 博客访问: 607461
  • 博文数量: 107
  • 博客积分: 713
  • 博客等级: 上士
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-05 00:14
个人简介

呵呵

文章分类

全部博文(107)

文章存档

2015年(2)

2014年(17)

2013年(29)

2012年(52)

2011年(7)

分类: LINUX

2012-11-03 10:24:31

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

共享内存实现实现分为两个步骤:
一:创建共享内存,使用shmget函数
二:映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数

创建:
int shmget(key_t key,int size,int shmflg)
key标识共享内存的键值:0/IPC_PRIVATE。当key的取值为IPC_PRIVATE,则函数shmget()将创建一个新的共享内存;如果key的取值为0,而参数shmflg中又设置IPC_PRIVATE这个标志,则同样会创建一块新的共享内存。
返回值:如果成功则返回内存标识符,如果失败则返回-1;

映射:
int shmat(int shmid, char *shmaddr,int flag)
参数:
shmid:shmget函数返回的共享内存存储标识符
flag:决定以后用什么方式来确定映射地址(通常为0)
返回值:
如果成功,则返回共享内存到进程中的地址;如果失败,则返回-1

一个进程不再需要共享内存时,需要把它从进程地址空间中脱离。
脱离函数:
int shmdt(char *shmaddr)
阅读(6116) | 评论(0) | 转发(1) |
0

上一篇:exec函数

下一篇:EOF,NULL,\0 区别

给主人留下些什么吧!~~