码迷,mamicode.com
首页 > 系统相关 > 详细

linux C学习笔记04--内存映射

时间:2015-05-29 15:14:35      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

内存映射代码,打开一个文件与映射到内存中,对内存和文件的修改都会反映到文件中来,反之亦然,先贴代码,以后再完善:

 

/*************************************************************************
    > File Name: memory_map.c
    > Author: hailin.ma
    > Mail: mhl2018@126.com 
    > Created Time: Thu 28 May 2015 08:20:50 AM CST
 ************************************************************************/

#include<stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <string.h>

#define MEM_MAP_SIZE 1000

int memory_map()
{
    char * pmap = NULL;
    int fd;
    char rdbuf[100] = "\0";

    fd = open("memory.txt",O_RDWR|O_CREAT|O_TRUNC,0660);

    if(fd == -1)
    {
        perror("open error");
        return -1;
    }

    write(fd,"hello world!",MEM_MAP_SIZE);        //write data to file,the write size must as long as MEM_MAP_SIZE
    
    pmap = mmap(NULL,MEM_MAP_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);        //map memory with file

    printf("the memory is: %s\n",pmap);

    memset(pmap,a,MEM_MAP_SIZE);
    memcpy(pmap,"this is memory map",18);        //try to chang any charactor in memory
    
    lseek(fd,0,SEEK_SET);            //move fd pointer to begin section
    
    memset(rdbuf,0,sizeof(rdbuf));
    read(fd,rdbuf,100);                //read the context in file

    printf("the file is: %s\n",rdbuf);

    munmap(pmap,10);

    close(fd);

    return 0;
}


 

main函数调用后运行效果图:

技术分享

linux C学习笔记04--内存映射

标签:

原文地址:http://www.cnblogs.com/mhl2018/p/4538349.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!