手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux下mmap函数的一个练习

[日期:2015-01-19] 来源:Linux社区  作者:Linux [字体: ]

mmap函数用来将文件映射进内存。需要指出的是这里的内存指的是虚拟内存。

mmap函数可以将一个文件的内容映射到内存,这样就可以直接对该内存进行操作,从而省去IO操作。

下面是一个小例子:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<error.h>
#include<fcntl.h>
#include<sys/mman.h>
#include<unistd.h>
int main(int argc,char *argv[]){
    int fd,len;
    char *ptr;
    if(argc<2){
        printf("please enter a file\n");   
        return 0;
    } 
    if((fd=open(argv[1],O_RDWR))<0){
        perror("open file error");
        return -1;
    } 
    len=lseek(fd,0,SEEK_END); 
    ptr=mmap(NULL,len,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);//读写得和open函数的标志相一致,否则会报错
    if(ptr==MAP_FAILED){
        perror("mmap error");
        close(fd);
        return -1;
    } 
    close(fd);//关闭文件也ok
    printf("length is %d\n",strlen(ptr));
    printf("the %s content is:\n%s\n",argv[1],ptr);
    ptr[0]='c';//修改其中的一个内容
    printf("the %s content is:\n%s\n",argv[1],ptr);
    munmap(ptr,len);//将改变的文件写入内存
    return 0;
}

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-01/112075.htm

linux
相关资讯       Linux函数  mmap函数 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款