函数原型:
#include <sys/mman.h> /* 参数addr用于指定映射存储区的起始地址,通常将其设置为0,这表示由系统选择该映射区的起始地址; 参数fd指定要被映射文件的描述符; 参数len是映射字节数; 参数off是要映射字节在文件中的起始偏移量;另外,off和addr的值必须是页面大小的整数倍页面的大小可以由sysconf(_SC_PAGE_SIZE)来返回. 参数prot: PROT_READ 映射区可读 PROT_WRITE 映射区可写 PROT_EXEC 映射区可执行 PROT_NONE 映射区不可访问 参数flags: MAP_PRIVATE 私有,对映射区的写操作会导致创建映射文件的一个私有副本; MAP_SHARED 对映射区的写操作直接修改原始文件,多个进程对同一个文件的映射是共享的, 一个进程对映射的内存做了修改,另一个进程也会看到这种变化; MAP_FIXED 返回值必须等于addr,不利于移植性 MAP_ANONYMOUS 匿名映射,此时忽略fd,且映射区域无法与其它进程共享, 这个选项一般用来扩展heap MAP_DENYWRITE 只允许对应射区域的写入操作,其他对文件直接写入的操作将会被拒绝。 MAP_LOCKED 将映射区域锁定住,这表示该区域不会被置换(swap)。 mmap调用成功时返回该映射区的起始地址。 */ void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t off); /* mprotect函数可以更改一个现存映射存储区的权限; */ int mprotect(voi