gpt4 book ai didi

在返回用户信号处理程序的系统调用中导致段错误?

转载 作者:太空狗 更新时间:2023-10-29 11:10:18 25 4
gpt4 key购买 nike

我一直在研究一种技术,可以透明地对内存映射数据进行数据转换。这个想法基本上是内存映射所需的文件,并创建第二个受读/写保护的匿名区域。当用户访问匿名区域时,会捕获由此产生的段错误,转换数据并更改权限以允许访问继续进行。

效果很好,但有一个小问题。在不首先接触数据的情况下将指针传递给 write() 之类的系统调用不会触发段错误处理程序,而只是返回 EFAULT,因为未调用处理程序来修复权限。有没有办法在出现问题时使系统调用使用用户空间处理程序?

最佳答案

不,当缓冲区错误时,没有办法让 write 之类的系统调用生成 SIGSEGV。返回 EFAULTwrite(2) 系统调用语义的一部分。

如果只关心 libc.so,您可能会做 LD_PRELOAD 事情;您还可以使用 ptrace 来捕获系统调用 à la strace

另见 this answer到你的一个非常相似的问题。

关于在返回用户信号处理程序的系统调用中导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11690948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com