概述
文件内存映射:速度比较快。
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复