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