void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
参数1:要映射到的内存区域的起始地址,通常都是用NULL(NULL即为0)。NULL表示由内核来指定该内存地址
参数2:要映射的内存区域的大小
参数3:期望的内存保护标志,不能与文件的打开模式冲突。是以下的某个值,可以通过or运算(‘|’)合理地组合在一起
port选项 |
---|
PROT_EXEC //页内容可以被执行 |
PROT_READ //页内容可以被读取 |
PROT_WRITE //页可以被写入 |
PROT_NONE //页不可访问 |
参数4:指定映射对象的类型,映射选项和映射页是否可以共享。它的值可以是一个或者多个以下位的组合体
映射对象的类型 |
---|
MAP_FIXED :使用指定的映射起始地址,如果由start和len参数指定的内存区重叠于现存的映射空间,重叠部分将会被丢弃。如果指定的起始地址不可用,操作将会失败。并且起始地址必须落 |