在Unix中是否有类似于IsBadReadPtr的函数?至少IsBadReadPtr的一些功能?我想编写一个程序,如果某个进程发生了不好的事情(如SIGSEGV),它会做出反应并恢复一些信息.但我想检查指针,以确保数据没有损坏,看看它们是否可以安全访问.否则崩溃处理程序本身将崩溃,从而变得无用.
有什么建议?
我需要测试内存地址是否可读,所以我搜索并发现了这个问题: 如何测试一个地址在linux userspace app中是否可读 如用户@caf所述:
规范的方法是使用write()系统调用从页面读取(写入虚拟管道()文件描述符).
不幸的是,他没有提供任何代码示例,我不能发表评论(低声誉)也没有给他发消息(至少我不知道如何).
编辑
我不能通过做那样的事情来省略创建管道吗?
int result = write(0, addr, 1);
Run Code Online (Sandbox Code Playgroud)
@Mats Petersson:我试图在使用函数指针(我正在递增指针并逐字节地复制其值)之后分析和更改函数,以确定它是否仍然是这个函数我需要知道内存是否可写和可读(我知道这是一个有点愚蠢的事情).无论如何,我不想改变我的程序的内存读/写权限,所以你说的可能是个问题.
编辑2 @Damon:有没有其他可靠的方法来做到这一点?