如何获得一个内存区域的保护标志,标志是PROT_READ /PROT_EXEC在mprotect



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

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

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

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

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

最新更新