c++ - 在进程中隔离和多重实例化 C 库

标签 c++ c ipc

我们有一个 C 库(.lib windows 和 .a linux),它只允许创建一个单例,并且在实例化后也不能正常关闭(内存泄漏和线程保持事件状态)。

重写它并找出错误,是否有一种简单的方法可以在进程中隔离这种行为不当的代码,从而可以删除单例限制,并且可以将不干净的 tidyup 沙盒化?

我主要对任何进程中的选项感兴趣,如果确实有的话。一个单独的过程显然可以解决它,但是会产生架构开销以允许远程控制库,除非有非常低影响的解决方案(它有一个广泛的 API,所以维护很多胶水并不是特别有吸引力)。

最佳答案

抱歉,没有简单的方法来做到这一点。对行为不当的库进行沙盒处理通常是使用单独的进程来完成的,您已经建议过自己这样做。像 Protocol Buffers 这样的 IPC 工具可能有助于定义和实现 IPC 协议(protocol)。

关于c++ - 在进程中隔离和多重实例化 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7093535/

相关文章:

c - 在 C 中使用 void* 指针的缺点

谁能帮我编写这个 C 程序编码吗?

c - 错误 : Invalid argument; while sending msgsnd() message; not matching queue ID

c++ - 对 func 'abc' 的 undefined reference

c++ - 如何正确制作带有 templetad 数组的类对象?

c++ - boost::process 抛出 LNK2019:未解析的外部符号

c - 替换 C 中的字符

c - 消息队列(IPC)接收进程不打印C中接收到的数据

c++ - 在 "<name>.exe": 0xC0000005: Access violation writing location 0x0000000000000000 中的 0x00007FFF168E1657 (vcruntime140d.dll) 抛出异常

c++ - 将指针传递给函数并修改它