创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥Linux系列专栏:Linux基础 🔥给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

一、mmap()函数
mmap内存映射是一种可以用于进程间通信的技术,通过mmap,多个进程之间可以直接读取和修改磁盘上的文件内容,从而实现进程通信。
同时也不需要像传统方式那样先将文件读入到用户空间,然后再从用户空间写入内核空间。这种映射机制提高了文件访问的效率。(相比于read()减少了一次拷贝开销)
#include <sys/mman.h>
void* mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
函数参数:
- addr: 映射区的首地址。通常传NULL,表示让系统自动选择一个合适的地址
- length:要映射的字节数
- prot:内存映射区的读写权限。可以分为PROT_READ、PROT_WRITE、PROT_READ|PROT_WRITE
- flags:映射的属性,可以分为 MAP_PRIVATE(对映射内容的修改不写入 拷贝映射)或 MAP_SHARED(对映射内容的修改写入 Sync同步)
- fd:要映射的文件的文件描述符
- offset:文件中的偏移量,表示从文件的哪个位置开始映射,默认为0代表整个文件,需要是页大小的倍数(例如4K、8K…)
函数返回值:
- 如果映射成功:返回一个指向映射区首地址的泛型指针,可以使用不同数据类型访问数据
- 如果映射失败:返回
MAP_FAILED,为(void *) -1
释放映射区:
int munmap(

最低0.47元/天 解锁文章
1685

被折叠的 条评论
为什么被折叠?



