【发布时间】:2011-10-21 02:09:13
【问题描述】:
我使用 mprotect() 将保护标志设置到内存区域。 稍后,我想恢复这个内存区域的保护标志。
我的问题是,如何获取内存区域的保护标志? 标志包括 PROT_READ ...
我的解决方法是手动解析 /proc/self/maps。 但是这个解决方案很笨拙...
我想知道是否有任何我可以使用的系统调用。
【问题讨论】:
标签: c++ c system-calls mprotect
我使用 mprotect() 将保护标志设置到内存区域。 稍后,我想恢复这个内存区域的保护标志。
我的问题是,如何获取内存区域的保护标志? 标志包括 PROT_READ ...
我的解决方法是手动解析 /proc/self/maps。 但是这个解决方案很笨拙...
我想知道是否有任何我可以使用的系统调用。
【问题讨论】:
标签: c++ c system-calls mprotect
一般来说这是唯一的方法。 POSIX 不提供访问保护的方法。在您可以控制映射页面的代码的特定应用程序的使用中,您可以让它在那时将标志保存在某个地方,但通常您必须阅读/proc/self/maps。此外,如果您无法读取/proc,您可能希望回退到一些默认权限。 PROT_READ|PROT_WRITE 可能是大多数事情的合理默认值,但在某些情况下,您可能还需要 PROT_EXEC。
【讨论】: