文章目录
  1. 1. 描述
  2. 2. 函数原型
  3. 3. 参数说明
  4. 4. 返回值

描述

mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用.但需注意,直接对该段内存写时不会写入超过当前文件大小的内容。

函数原型

头文件
函数原型
void mmap(void start,size_t length,int prot,int flags,int fd,off_t offset);
int munmap(void* start,size_t length);

参数说明

  1. start:映射区的开始地址,设置为0时表示由系统决定映射区的起始地址。
  2. length:映射区的长度。//长度单位是 以字节为单位,不足一内存页按一内存页处理。
  3. prot:期望的内存保护标志,不能与文件的打开模式冲突。是以下的某个值,可以通过or运算合理地组合在一起。
  4. flags:指定映射对象的类型,映射选项和映射页是否可以共享。它的值可以是一个或者多个以下位的组合体。
  5. fd:有效的文件描述词。一般是由open()函数返回,其值也可以设置为-1,此时需要指定flags参数中的MAP_ANON,表明进行的是匿名映射。
  6. off_toffset:被映射对象内容的起点。

返回值

成功执行时,mmap()返回被映射区的指针,munmap()返回0。失败时,mmap()返回MAP_FAILED[其值为(void *)-1],munmap返回-1。errno被设为以下的某个值。

文章目录
  1. 1. 描述
  2. 2. 函数原型
  3. 3. 参数说明
  4. 4. 返回值