mmap函数

函数原型

void* mmap(void* addr, size_t length,int prot,int flag,int fd,off_t offset)
返回值:成功返回映射区的首地址,失败返回MAP_FAILED宏

ps:该函数出错几率大,切记要检查返回值。

函数参数

addr:建立映射区的首地址,由linux内核指定,使用时直接传NULL

length:欲创建映射区的大小

prot:映射区权限 PORT_READ、PORT_WRITE、PORT_READ | PORT_WRITE

flag:标志为参数(常用于设定更新物理区域,设置共享、创建匿名映射区)
MAP_SHARED:会将映射区所做的操作反映到物理设备(磁盘)上
MAP_PRIVATE:映射区所做的修改不会反映到物理设备

fd:用来建立映射区的文件描述符

offset:映射文件的偏移 (4k的整数倍)

下面展示一些 内联代码片

// A code block
#include<sys/mman.h>
 p  = mmap(NULL,len,PROT_READ | PORT_WRITE,MAP_SHARED,fd,0)
 if(MAP_FAILED == p)
 	exit(1)
munmap(p,len)     // 配套使用

注意事项

//当MAP_SHARED时,创建映射区的权限要小于等于打开文件的权限(出于对映射区的保护);而MAP_PRIVATE时则无所谓。

//映射区创建的过程中隐含着一次读操作。

//munmap第一参数必须为映射区首地址。

//映射区大小必须小于等于文件大小。

//映射区与文件关闭无关,只要映射建立成功,文件可以立即关闭。

//映射文件大小不能为0,即用于创建映射区的文件必须又实际大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值