如何隔离不良行为的第三方c-lib只允许创build为单例?

目前我正在开发一个本地-c nodejs插件来包装第三方闭源c-lib并将其公开给nodejs。

到现在为止还挺好。 我的解决scheme的工作原生代码可以调用和使用。

随着这些职能的调用,随之出现一个问题。 3rdParty库似乎总是为运行时对象分配相同的struct (?; 说:在内存中的相同位置 )。

我能否以某种方式“沙盒”这个第三方库? 有没有解决这个问题的模式? 也许特定于nodejs-addon开发,因为nodejs是单线程,单进程应用程序。

在这种情况下,一般的build议似乎是在单独的进程中运行3rdParty库,如下所述:例如: 隔离并多次实例化正在处理的C库

我不太清楚如何使这个模式适应nodejs,除了创build自己的nodejs进程为“工作者”,并以某种方式通过rpc进行交stream。 但是这对我来说似乎有些尴尬,我不想重新发明轮子。

恕我直言产卵不同的节点进程只是为了这个似乎是'最丑陋'的解决scheme。 但如果我错了,请纠正我。

长话短说 感谢adivce。

这是一个非常非常困难的问题,我唯一find的解决scheme是在一个临时目录(使用不同的名字)创build共享对象的许多副本,在这个目录中你的程序每次载入它们一次。 大多数连接器不会意识到它们是相同的,并允许您将它们加载到不同的地址空间。 但是,这确实取决于代码是独立的AFAIK,所以可能无法正常工作。 这与使用IPC几乎一样丑陋,所以这取决于你该怎么做。