mmap,mprotect,msync与munmap函数

函数原型:

#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
  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值