我是靠谱客的博主 听话鱼,最近开发中收集的这篇文章主要介绍文件映射MMAP,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文件内存映射:速度比较快。

MMAP   

工作当中使用相当频繁。

将一个文件映射到内存。页:物理内存。

磁盘驱动器:直接把磁盘上一块。

了解MMAP是学习大数据的第一步

参数:

start :填NULL。由系统决定映射区的起始地址。嵌入式编程的时候才自己写,系统帮你选就写NULL。

size_t length:文件大小。用stat或fstat

既要读又要写:PROT_READ|PROT_WRITE

PROT_EXEC:硬编码,工作中不会用到。

flags:填MAP_SHARED.

fd:确保文件要可读可写。一定要用RDWR。

off_t offset:默认填0.offset是指隔start多远开始存。

返回的时指针。

munmap 解除映射。start和length必须和申请的一样。

#include "func.h"

int main(int argc,char** argv){

        if(argc !=2){

                printf("error argsn");

                return -1;

        }

        int fd=open(argv[1],O_RDWR);                //文件要可读可写  

        if(-1==fd){

                perror("open");

                return -1;

        }

        struct stat s;

        fstat(fd,&s);

        char *p;

        p=(char*)mmap(NULL,s.st_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);

        if((char*)-1==p){

                perror("mmap");

                return -1;

        }

        printf("p[1]=%cn",p[1]);

        p[0]='H';

        int ret=munmap(p,s.st_size);

        if(ret!=0){

                perror("munmap");

                return -1;

        }

        return 0;

}

文件有多大,映射进去就是多大,原理就是整个文件的搬移。映射后不能改变文件大小。

最后

以上就是听话鱼为你收集整理的文件映射MMAP的全部内容,希望文章能够帮你解决文件映射MMAP所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部