我使用mprotect()来设置内存区域的保护标志。之后,我想恢复这个内存区域的保护标志。
我的问题是,如何获得内存区域的保护标志?标志包括PROT_READ…
我的解决方法是手动解析/proc/self/maps。但这个解决方案是笨拙的…
我想知道是否有系统调用可以使用。
通常这是唯一的方法。POSIX不提供访问保护的方法。在特定于应用程序的用法中,您可以控制映射页面的代码,您可以让它在那个时候将标志保存在某个地方,但通常您必须读取/proc/self/maps
。此外,如果无法读取/proc
,您可能希望回退到一些默认权限。PROT_READ|PROT_WRITE
可能是一个合理的默认情况下,大多数事情,但在某些情况下,你也可能需要PROT_EXEC
。