void* mmap(void* addr,size_t size,int prot,int flags, int fd, off_t offset)
//mmap.c #include <stdio.h> #include <sys/mman.h> #include <stdlib.h> #include <string.h> int main() { /*映射一片内存*/ void* p = mmap(0,//让系统指定映射内存的首地址(虚拟地址) 4,//映射4bytes的空间,其实会映射一页内存 PROT_READ|PROT_WRITE,//权限,有读写权限 MAP_PRIVATE|MAP_ANONYMOUS,/*MAP_ANONYMOUS:匿名映射,当映射到内存时,只能使用匿名映射。MAP_SHARED和MAP_PRIVATE必选其一。*/ 0,//文件描述符,用于映射到文件,内存映射中会忽略 0);//文件偏移量,用于文件,内存映射也会忽略 if(p==MAP_FAILED){ perror("映射失败"); exit(-1); } int* pi = p+500; int i; for(i=10; i<60; i++){ pi[i] = i; } strcpy(p+750, "ABCDEFGHIJKLMN"); char* pc = p; for(i=0; i<800; i++){ if(i%10==0)printf("\n"); printf("%x ", pc[i]); } printf("p=%p\n", p); sleep(20); munmap(p, 4); // while(1); }
mmap()与munmap()的小例子,布布扣,bubuko.com
原文:http://www.cnblogs.com/linuxnewbie/p/3885447.html