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);
}
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
