Linux中mprotect()函数的用法
来源:互联网 发布:泰拉瑞亚mac版汉化 编辑:程序博客网 时间:2024/06/01 16:13
转自:http://www.linuxdiyf.com/linux/14382.html
在Linux中,mprotect()函数可以用来修改一段指定内存区域的保护属性。
函数原型如下:
#include <unistd.h>
#include <sys/mmap.h>
int mprotect(const void *start, size_t len, int prot);
mprotect()函数把自start开始的、长度为len的内存区的保护属性修改为prot指定的值。
prot可以取以下几个值,并且可以用“|”将几个属性合起来使用:
1)PROT_READ:表示内存段内的内容可写;
2)PROT_WRITE:表示内存段内的内容可读;
3)PROT_EXEC:表示内存段中的内容可执行;
4)PROT_NONE:表示内存段中的内容根本没法访问。
需要指出的是,锁指定的内存区间必须包含整个内存页(4K)。区间开始的地址start必须是一个内存页的起始地址,并且区间长度len必须是页大小的整数倍。
如果执行成功,则返回0;如果执行失败,则返回-1,并且设置errno变量,说明具体因为什么原因造成调用失败。错误的原因主要有以下几个:
1)EACCES
该内存不能设置为相应权限。这是可能发生的,比如,如果你 mmap(2) 映射一个文件为只读的,接着使用 mprotect() 标志为 PROT_WRITE。
2)EINVAL
start 不是一个有效的指针,指向的不是某个内存页的开头。
3)ENOMEM
内核内部的结构体无法分配。
4)ENOMEM
进程的地址空间在区间 [start, start+len] 范围内是无效,或者有一个或多个内存页没有映射。
如果调用进程内存访问行为侵犯了这些设置的保护属性,内核会为该进程产生 SIGSEGV (Segmentation fault,段错误)信号,并且终止该进程。
- Linux中mprotect()函数的用法
- Linux中mprotect()函数的用法
- Linux中mprotect()函数的用法
- Linux中mprotect()函数的用法
- mprotect()函数 Unix/Linux
- mprotect 函数
- linux编程之mprotect
- linux编程之mprotect
- linux编程之mprotect
- linux mprotect 修改用户态内存的方法
- mmap函数和mprotect函数
- mprotect
- mprotect()
- linux中strdup函数的用法
- linux/Unix中fork函数的用法
- Linux中waitpid()函数的用法
- linux中fork()函数的用法详解
- linux中execve函数的用法
- hihocoder #1467 : 2-SAT·hihoCoder音乐节
- 毕业设计的坑--天气系统的设计(6)
- POJ2389 —— 高精度乘法
- 积累--创建自己的网站(前端)
- 大视野OJ:1607 Patting Heads(篩素法||贡献统计)
- Linux中mprotect()函数的用法
- MD5与Destiny代码
- Maven 配置和aliyunMaven库的配置
- 原反补码
- Git常用操作
- MPI入门基础(程序欣赏)
- 前端的小玩意(16)——在IE7的场景下,获取字符串的第n个字符
- 实验吧编程WP(一)
- 子网掩码计算