我们有一个C库(.lib windows和.a linux),它只允许创建一个单例,并且一旦实例化,也不会正常关闭(内存泄漏和线程保持活动状态).
重写它并将错误排除在外,是否有一种简单的方法可以在进程中隔离这种行为不当的代码,从而可以删除单例限制,并且可以对不清洁的整理进行沙盒处理?
我主要对任何进程中的选项感兴趣,如果确实有的话.一个单独的过程显然会解决它,但是会产生架构开销以允许远程控制库,除非有非常低影响的解决方案(它具有广泛的API,因此保持大量的粘合剂并不是特别有吸引力).
抱歉,没有简单的方法可以做到这一点。对行为不良的库进行沙箱处理通常是使用单独的进程来完成的,您已经自己建议了这一点。像 Protocol Buffers 这样的 IPC 工具可能有助于定义和实现 IPC 协议。