1. mmap系统调用

 void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )

mmap负责将文件映射到虚拟地址空间,通过对这段内存的读取和修改而不用read和write对文件进行修改。

wKiom1elqa2CZkTIAADOk4jwd2s521.png-wh_50

2.maap函数的参数问题

addr:表示映射区的起始地址,NULL表示映射地址由系统自行安排

len:表示映射到内存的文件长度

prot:映射区的保护方式

PROT_EXEC:映射区可被执行

PROT_READ:映射区可被读

pROT_WRITE:映射曲可被写

flags:映射区的特性

MAP_SHARED:写入映射区的数据可以复制回文件,且允许其他映射该文件的进程共享。

 MAP_PRIVATE:对映射区的写入操作会产生一个映射区的复制(copy-on-write), 对此区域所做的修改不会写回原文件。

fd: 由open返回的文件描述符, 代表要映射的文件。

offset: 以文件开始处的偏移量, 必须是分页大小的整数倍, 通常为0, 表示从文件头开始映射。

编程如下:

wKiom1eltFqDpa9qAACm-sNSiGs482.png-wh_50

wKioL1eltFriK-A2AAAY0bzou1s345.png-wh_50