linux c之mmap使用
/* * File: main.c * Author: root * * Created on 2013年10月30日, 下午10:24 */ #include <stdio.h> #include <stdlib.h> #include <sys/mman.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> /* * */ int main(int argc, char** argv) { //获取程序目录 char dirPath[128]; getcwd(dirPath,128); printf("%s ",dirPath); //获取程序路径 char pathbuf[128]; readlink("/proc/self/exe",pathbuf,128); printf("%s ",pathbuf); int fd; char* buf; int i; //取得文件状态)相关函数 fstat,lstat,chmod,chown,readlink,utime struct stat statbuf; if(stat("test.txt",&statbuf)==-1) { //文件不存在 perror("fail to get stat"); exit(1); } fd=open("test.txt",O_RDONLY); if(fd==-1) { perror("fail to open"); exit(1); } //建立内存映射,)用来将某个文件内容映射到内存中,对该内存区域的存取即是直接对该文件内容的读写。 buf=(char*)mmap(NULL,statbuf.st_size,PROT_READ,MAP_PRIVATE,fd,0); if(buf==MAP_FAILED) { perror("fail to mmap"); exit(1); } i=0; while(i<statbuf.st_size) { printf("%c",buf[i]); i++; } printf(" "); //解除内存映射 if(munmap(buf,statbuf.st_size)==-1) { perror("fail to munmap"); exit(1); } close(fd); printf("end! "); return (EXIT_SUCCESS); }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: QT 设置Linedit只能输入十六进制字符
- 下一篇: linux内存映射mmap原理分析