实例:
// 文件内存映射
#include <iostream>
#include <string>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
using namespace std;
// 主函数
int main(int argc,char* argv[])
{
// 文件描述符
int fd;
// 文件映射的地址
void *addr;
// 文件状态信息
struct stat f_st;
// 打开一个文件
fd = open("1.txt", O_RDONLY);
// 得到文件的状态信息,目的是为了下一步取得文件大小
fstat(fd, &f_st);
// 进行文件内存映射
addr = mmap(NULL, f_st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
/* 判断是否映射成功 */
if(addr == MAP_FAILED)
return -1;
// 打印文件的内容
printf("%s", addr);
/* 解除映射 */
munmap(addr, f_st.st_size);
close(fd);
}