mmap()函数

本文介绍了Linux中mmap函数的使用,它提供了高效访问内存的方法,允许直接对文件进行读写,无需read()或write()。mmap函数参数包括映射起始地址、长度、权限、映射标志、文件描述符和文件偏移量。常见的映射权限有PROT_READ、PROT_WRITE和PROT_EXEC,映射标志包括MAP_ANONYMOUS、MAP_PRIVATE和MAP_SHARED等。文章还给出了匿名映射和文件映射的示例,解释了munmap函数用于解除映射。
摘要由CSDN通过智能技术生成

  mmap函数提供了一种高效的方式对内存进行访问,其成功则会直接返回一个映射的起始指针,也可以对文件进行直接访问,而不需要read()或write()函数等进行操作。 

  函数所在头文件为<sys/mma.h>

  其形式为:void *mmap(void *start, size_t length, int port, int *flag, int fd, off_t offset)

  其中start 为映射区的起始地址,如果想要自动选择的话,要用NULL;

  length:映射区的字节长度,自动按页取整,这里默认4k为一页。

  port:访问权限,包括:
  PROT_READ - 可读
  PROT_WRITE - 可写
  PROT_EXEC - 可执行
  PROT_NONE - 不可访问

  flag:映射标志,包括:

  MAP_ANONYMOUS - 匿名映射,将虚拟内存映射到物理内存,函数的最后两个参数fd和offset被忽略
  MAP_PRIVATE - 私有映射,将虚拟内存映射到文件的内存缓冲区中而非磁盘文件
  MAP_SHARED - 共享映射,将虚拟内存映射到磁盘文件中
  MAP_DENYWRITE - 拒写映射,文件中被映射区域不能存在其它写入操作
  MAP_FIXED - 固定映射,若在start上无法创建映射,则失败(无此标志系统会自动调整)
  MAP_LOCKED - 锁定映射,禁止被换出到换页文件

  offset :文件偏移量,自动按页对齐

  mmap函数成功返回相应的起始地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值