码迷,mamicode.com
首页 > 其他好文 > 详细

mmap函数实现共享内存

时间:2016-08-06 21:58:35      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:mmap函数

   mmap将一个文件或者其他对象映射进内存。mmap也可以实现共享内存。mmap函数调用使得进程之间通过映射同一个文件实现共享内存。文件被映射到进程地址空间后,进程可以像读写内存一样对文件进行操作。

  函数原型:void* mmap(void* addr,size_t length,int prot,int flags,int fd,off_t offset);


  addr:映射区的开始地址,设置为0时表示系统决定映射区的起始地址

  length:映射区的长度。长度单位为字节

  prot:期望的内存保护标志。取以下几个值:

       PORT_EXEC:页内容可以被执行   PORT_READ:页内容可以被读取

       PORT_WRITE:页内容可以被写入  PROT_NONE:页内容不可访问

 flag:指定映射对象的类型,映射选项与映射页是否可以共享。

            MAP_SHARED:与其他所有映射这个对象的进程共享映射空间。

              MAP_PRIVATE:建立一个写入时拷贝的私有映射。内存区域的写入不会影响到原文件。

              MAP_FIXED :使用指定的映射起始地址,如果由start和len参数指定的内存区重叠于现存的映射空                                      间,重叠部分将会被丢弃。如果指定的起始地址不可用,操作将会失败。

              fd: 有效的文件描述符。返回,由一般open()函数,其值可以设置为-1.此时需要指定flags参数为                         MAP_ANON,表明进行的是匿名映射。

             offset:被映射对象内容的起点。

 

 返回值:成功,返回被映射区的指针;失败,返回-1.

技术分享

技术分享




本文出自 “一起去看星星” 博客,转载请与作者联系!

mmap函数实现共享内存

标签:mmap函数

原文地址:http://10810429.blog.51cto.com/10800429/1835131

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!