如何获取内存区域的保护标志,标志是mprotect中的PROT_READ / PROT_EXEC

时间:2011-08-05 17:48:06

标签: c++ c system-calls mprotect

我使用mprotect()将保护标志设置到内存区域。 稍后,我想恢复这个内存区域的保护标志。

我的问题是,如何获取内存区域的保护标志? 标志包括PROT_READ ......

我的解决方法是手动解析/ proc / self / maps。 但这个解决方案是笨拙的......

我想知道是否有任何可以使用的系统调用。

1 个答案:

答案 0 :(得分:2)

一般来说,这是唯一的方法。 POSIX没有提供访问保护的方法。在特定于应用程序的用法中,您可以控制映射页面的代码,您可以在那时将标记保存在某处,但通常您必须阅读/proc/self/maps。此外,如果您无法阅读/proc,则可能需要回退到某些默认权限。对于大多数事情,PROT_READ|PROT_WRITE可能是合理的默认值,但在某些情况下,您可能还需要PROT_EXEC