内存映像IO-Linux下C编程指南
2014-09-01 22:04
225 查看
内存映像是通过将文件映射到内存中去以提高文件读取速度。
此时可以使用指针快速访问文件中的数据
1.
使用的函数
要将外部存储的文件映射到内存中,需要使用
此时,若start不为NULL会将文件映射到此位置,但是不保证一定能成功;
length表示占用内存映像的大小,字节记;
prot表示内存映像的安全属性,可选项为:
flag表示内存映像的标志
off_t表示映像的内容距离文件头的偏移量
调用失败返回-1,否则返回映像内存起始地址
****注意需要在进程中打开文件才可以进行映射***
2.
修改内存映像的保护值prot
成功会返回0,出错返回-1,且会将errno置为它。
3.
将内存映像写入外存
4.
修改映像内存大小
参数flag表示是否在需要时移动映像的位置
调用成功返回映像新地址,否则返回错误值-1
此时可以使用指针快速访问文件中的数据
1.
使用的函数
要将外部存储的文件映射到内存中,需要使用
#include<sys/types.h> #include<sys/mman.h> void *mmap(void *start.size_t length,int prot,int flag,int fd,off_t offset);
此时,若start不为NULL会将文件映射到此位置,但是不保证一定能成功;
length表示占用内存映像的大小,字节记;
prot表示内存映像的安全属性,可选项为:
PROT_EXEC //被映射的内存可能可执行 PROT_NONE // 被映射的内存不可访问 PROT_READ //被映射的内存可读 PROT_WRITE //被映射的内存可写
flag表示内存映像的标志
MAP_FIXED //若无法在start建立映像,则出错返回 MAP_REIVATE //对内存的改动不反映到外存文件中 MAP_SHARED //将内存中的改动保存到外存文件中
off_t表示映像的内容距离文件头的偏移量
调用失败返回-1,否则返回映像内存起始地址
****注意需要在进程中打开文件才可以进行映射***
2.
修改内存映像的保护值prot
int protect(const void *addr,size_t length,int prot);
成功会返回0,出错返回-1,且会将errno置为它。
3.
将内存映像写入外存
int msync(const void *start,size_t length,int flag); flag的参数选项为: MS_ASYNC //调度一个写操作并返回 MS_INVALIDATE //将映像到相同文件的映像无效以便使其更新为新数据 MS_SYNC //完成写操作后函数返回
4.
修改映像内存大小
void *mremap(void *old_addr,size_t old_length,size_t new_length,unsigned long flag)
参数flag表示是否在需要时移动映像的位置
调用成功返回映像新地址,否则返回错误值-1
相关文章推荐
- Linux音频编程指南
- Linux 学习数据专题【管理、编程、源码分析】——Linux相关图书选购指南
- GNU_linux编程指南读书笔记1 库的使用
- GNU_linux编程指南读书笔记6--内存管理
- GNU_linux编程指南读书笔记5 --访问系统信息
- Linux音频编程指南
- Linux音频编程指南(转自http://www.ibm.com/developerworks/cn/linux/l-audio/index.html#author 作者 肖文鹏)
- GNU/Linux 编程指南之三: autoconf-----configure software to a target platform
- GNU/Linux 编程指南之二:make
- Linux音频编程指南
- linux 文件操作函数 通过例子来解释 父子间文件描述符共享 内存映像图
- GNU/Linux 编程指南
- Linux编程C++内存管理之内存分配详解
- GNU/Linux 编程指南学习笔记之four : diff & patch
- Linux下C编程入门笔记——文件IO操作(二)
- Linux音频编程指南
- Linux编程常用的函数(五) 共享内存
- Linux音频编程指南
- GNU_linux编程指南读书笔记3 --文件和目录操作
- Linux下C编程入门笔记——文件IO操作