include <sys/mman.h>
void *mmap(void *addr, //用于指定映射存储区的起始地址,通常设置为0,表示让操作系统选择该映射区的起始地址。此函数的返回地址是映射区的起始地址。
size_t len, //映射的字节数
int plot, //对映射区的保护要求 1、PROT_READ(映射区可读) 2、PROT_WRITE(映射区可写) 3、PROT_EXEC(映射区可执行) 4、PROT_NONE(映射区不可访问)
int flag, //flag参数影响映射存储区的各种属性
int filedes, //指定要被映射文件的描述符
off_t off); //off表示要映射的字节在文件中的起始偏移量

2、mprotect函数---更改一个现存映射存储区的权限
int *mprotect(void *addr, //地址addr必须是系统页长的整数倍
size_t len, //len长度
int plot); // 对存储映射区保护要求 1、PROT_READ 2、PROT_WRITE 3、PROT_EXEC 4、PROT_NONE
本文详细探讨了Linux系统中mmap函数用于内存映射的原理和使用场景,以及mprotect函数如何改变映射内存的保护属性。通过这两个函数,开发者可以高效地管理进程内存,实现文件到内存的直接读写,以及动态调整内存的读写权限。了解这些技术对于优化系统性能和保障程序安全性至关重要。
1202

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



