Linux下IPC方法-内存映射区(二)mmap函数解析
2018-03-26 19:37
751 查看
1、存储映射I/O的概念及为什么要用内存映射区?
存储映射I/O(memory-mapped I/O):使一个磁盘文件与存储空间中的一个缓冲区相映射。于是从缓冲区中取数据就相当于读文件中的相应字节了。将数据存入缓冲区则相应的字节就写入到文件。这样就可以在不适用read和write函数的情况下,使用地址(指针)完成I/O操作。
2、内存映射区的特点?
既可以在有血缘关系进程间,也可以在非血缘关系进程间通信。
2、mmap函数
①作用:将磁盘文件的数据映射到内存里,用户通过修改内存(通过指针)就能修改磁盘文件。
②函数要包含的头文件:include<sys/mman.h>
③函数参数:Void *mmap(
void
4000
*addr, //映射区首地址,传NULL即可
size_t length, //映射区的大小
//除了0外随便指定(一定不能传0),但是最后实际值会是4k整数倍,一般文件多大,length指定多大
int prot, //映射区权限
//PROT_READ——映射区必须要有读权限
//PROT_WRITE
//读写都指定时:PROT_READ|PROT_WRITE
int flags, //标志位参数
//MAP_SHARED:修改了内存数据,会同步到磁盘
//MAP_PRIVATE:修改了内存数据,不会同步到磁盘
int fd, //文件描述符
//干嘛的文件描述符?要映射的文件对应的fd
//怎么得到?先open这个文件
off_t offset, //映射文件的偏移量
//作用:映射的时候文件指针的偏移量,必须是4k的整数倍,一般指定0,不偏移
) ④返回值:调用成功返回映射区的首地址,调用失败防护MAP_FAILED宏(其实是(void*)-1)。
3、munmap函数
①函数作用:释放内存映射区
②函数原型及参数:int munmap(void *addr, size_t length);
//addr:mmap函数的返回值
//length:mmap的第二个参数,映射区的长度 ③函数返回值:On success, munmap() returns 0, on failure -1, and errno is set (probably to EINVAL)。
存储映射I/O(memory-mapped I/O):使一个磁盘文件与存储空间中的一个缓冲区相映射。于是从缓冲区中取数据就相当于读文件中的相应字节了。将数据存入缓冲区则相应的字节就写入到文件。这样就可以在不适用read和write函数的情况下,使用地址(指针)完成I/O操作。
2、内存映射区的特点?
既可以在有血缘关系进程间,也可以在非血缘关系进程间通信。
2、mmap函数
①作用:将磁盘文件的数据映射到内存里,用户通过修改内存(通过指针)就能修改磁盘文件。
②函数要包含的头文件:include<sys/mman.h>
③函数参数:Void *mmap(
void
4000
*addr, //映射区首地址,传NULL即可
size_t length, //映射区的大小
//除了0外随便指定(一定不能传0),但是最后实际值会是4k整数倍,一般文件多大,length指定多大
int prot, //映射区权限
//PROT_READ——映射区必须要有读权限
//PROT_WRITE
//读写都指定时:PROT_READ|PROT_WRITE
int flags, //标志位参数
//MAP_SHARED:修改了内存数据,会同步到磁盘
//MAP_PRIVATE:修改了内存数据,不会同步到磁盘
int fd, //文件描述符
//干嘛的文件描述符?要映射的文件对应的fd
//怎么得到?先open这个文件
off_t offset, //映射文件的偏移量
//作用:映射的时候文件指针的偏移量,必须是4k的整数倍,一般指定0,不偏移
) ④返回值:调用成功返回映射区的首地址,调用失败防护MAP_FAILED宏(其实是(void*)-1)。
3、munmap函数
①函数作用:释放内存映射区
②函数原型及参数:int munmap(void *addr, size_t length);
//addr:mmap函数的返回值
//length:mmap的第二个参数,映射区的长度 ③函数返回值:On success, munmap() returns 0, on failure -1, and errno is set (probably to EINVAL)。
相关文章推荐
- Linux下IPC方法-内存映射区(三)mmap非血缘关系进程间通信
- Linux的mmap内存映射机制解析
- linux下的内存映射函数mmap详解及示例代码
- linux中使用内存映射(mmap)操作文件的方法
- linux下的内存映射函数mmap详解及示例代码
- 在linux中使用内存映射(mmap)操作文件的方法
- 解析Linux下的时间函数:设置以及获取时间的方法
- linux下的内存映射函数mmap详解及示例代码
- Linux IPC SOCKET 通信基本函数解析
- Linux的mmap内存映射机制解析
- Linux的mmap内存映射机制解析
- Linux系统调用之sysinfo函数解析
- Linux下查找函数说明的方法
- Linux-mmap函数介绍
- 【嵌入式Linux学习七步曲之第七篇 Linux的高级应用编程】TCP/IP网络编程函数解析
- Linux系统调用-- mmap/munmap函数详解【转】
- Linux操作系统的内存使用方法详细解析
- Linux 服务器的系统内存监控方法详细解析
- linux 下面查找函数的方法
- Linux服务器的系统内存监控方法详细解析