我有一个需要通过加载共享库来扩展的进程。有没有一种方法可以在沙箱环境(外部进程除外)中运行共享库代码,以便在出现段错误时不会使进程崩溃,并且对可以分配的内存量、可以使用的 CPU 周期有限制, ETC。
我认为没有一种干净的方法可以做到这一点。你可以尝试:
- 捕获段错误并从中恢复(棘手,特定于体系结构,但可行)
- 将库的 malloc/calloc 调用替换为可计算分配空间的检测版本(如何通过代码替换默认的malloc https://stackoverflow.com/questions/14168388/how-to-replace-default-malloc-by-code)
- 或者使用 malloc 钩子(http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html)
- CPU 周期占整个过程的一部分,因此我认为没有任何方法可以仅获取库的信息。唯一可行的选择 - 手动测量代码进行的每个库调用的刻度。
从本质上讲,尝试这会很有趣,但我建议您采用单独的进程方法并使用 RPC、配额、ulimit 等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)