1.void * mmap((void *addr, size_t length, int prot, int flags, int fd, off_t offset)
参数:
addr:用于指定映射存储区的起始地址,通常设置为0,表示由系统自行选择映射地址,函数返 回映射区的起始地址
length:映射区的长度 (字节数)
prot:PROT_READ 映射区可读
PORT_WRITE 可写
flags:MAP_SHARED 映射成功,改内存则磁盘也会发生改变
MAP_PRIVATE映射成功, 只改变内存,磁盘不会发生改变
fd: 要操作的文件
offset: 偏移到文件的哪里开始映射
2.int munmap(void *addr,size_t len) //解除映射
3.注意事项:
3.1映射长度不能大于文件长度,否则会发生段错误,如果想要加长映射空间,可以调用函数
ftruncate(fd,size);
3.2用于mmap映射的IO,哪怕只写映射都必须用RDWR方式打开要映射的文件