linux mmap

mmap 可以把磁盘文件都一部分直接映射到内存,这样文件中的位置就有量对应到内存地址,可以用指针对文件操作了

void *mmap(void *addr, size_t len, int prot, int flag, int filedes, off_t off);

int munmap(void *addr, size_t len);

addr 一般参数尾NULL,内核会自动分配,len是需要映射的那一部分长度,off是从文件的什么位置开始,必须是页的整数倍,filedes 是文件的描述符;

port 参数有4种取值:

PROT_EXEC  可执行

PROT_READ 可读

PROT_WRITE 可写

PROT_NONE 不可访问


flag 参数很多种,这里说2种:

MAP_SHARED 多进程对同一文件共享

MAP_PRIVATE 多进程不共享

mmap成功返回映射都首地址,出错返回常数MAP_FAILED;

进程终止,映射解除,也可以调用munmap解除,成功返回0,出错返回-1;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值