Linux中mmap函数的使用

mmap

Linux利用mmap函数允许程序创建共享内存,建立一段可以被多个程序读写的内存,一个程序的修改可以被其他程序看见。还可以用在文件的处理上,通过带特殊权限集的虚拟内存段实现,对虚拟内存段的读写会使操作系统读写磁盘文件中的对应部分。

#include <sys/mman.h>
void* mmap(void* addr,size_t len,int prot,int flags,int fildes,off_t off);

mmap函数创建一个指向一段内存区域的指针,该内存区域与通过一个打开的文件描述符访问的文件的内容相关联。
off用来改变文件中数据的起始偏移值,
len指定可以访问的数据量,
addr可以请求某个特定的内存地址,取值为零时则指针自动分配。
prot参数用于设置内存段的访问权限,按位或,PROT_READ:允许读,PROT_WRITE:允许写,PROT_EXEC:允许执行,PROT_NONE:该内存段不可访问。
flags参数控制程序对该内存段所造成的影响,MAP_PRIVATE:内存段私有,修改只对本进程有效。MAP_SHARED:把对该内存段的修改保存到磁盘文件中。MAP_FIXED:该内存段必须位于addr指定的地址处。

msync

#include <sys/mman.h>
int msync(void* addr,size_t len,int flags);

把该内存段的某个部分或全部的修改写回到被映射的文件中,或者从被映射的文件中读出。内存需要修改的部分由起始地址addr和长度len决定,flags参数控制执行修改的具体方式。MS_ASYNC采用异步方式,MS_SYNC采用同步方式,MS_INVALIDATE从文件中读回数据。

munmap

#include <sys/mman>.h
int munmap(void* addr,size_t len);

释放分配的内存段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值