我们有一个 C 库(.lib windows 和 .a linux),它只允许创建一个单例,并且在实例化后也不能正常关闭(内存泄漏和线程保持事件状态)。
重写它并找出错误,是否有一种简单的方法可以在进程中隔离这种行为不当的代码,从而可以删除单例限制,并且可以将不干净的 tidyup 沙盒化?
我主要对任何进程中的选项感兴趣,如果确实有的话。一个单独的过程显然可以解决它,但是会产生架构开销以允许远程控制库,除非有非常低影响的解决方案(它有一个广泛的 API,所以维护很多胶水并不是特别有吸引力)。
最佳答案
抱歉,没有简单的方法来做到这一点。对行为不当的库进行沙盒处理通常是使用单独的进程来完成的,您已经建议过自己这样做。像 Protocol Buffers 这样的 IPC 工具可能有助于定义和实现 IPC 协议(protocol)。
关于c++ - 在进程中隔离和多重实例化 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7093535/