3

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

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

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

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

4

1 回答 1

2

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

于 2011-08-05T18:09:07.463 回答