標籤:
記憶體映射代碼,開啟一個檔案與映射到記憶體中,對記憶體和檔案的修改都會反映到檔案中來,反之亦然,先貼代碼,以後再完善:
/************************************************************************* > File Name: memory_map.c > Author: hailin.ma > Mail: [email protected] > 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 1000int 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--記憶體映射