如何独立多次加载共享对象

How to load a shared object multiple times independently

本文关键字:加载 共享 对象 何独立 独立      更新时间:2023-10-16

我的任务是设计一个小守护程序(在debian linux上),该守护程序将使用Blackbox Libfoo.SO与外部EFT终端进行通信。有几个相同的EFT终端(大约100个),一个libfoo。因此,实例只能与一个终端通信。有一个初始调用基本将实例绑定到终端。

我们主要在公司中使用Java,但这可能需要C 实现。编程语言尚未定义。

由于我们需要处理多个终端的并发通信(也许约10个并发线程),因此我们需要加载libfoo.so的几个实例。我正在寻找设计原理如何解决这样的要求(Dlopen只会加载一次SO,而JNI也只会加载同样的东西)。我需要产生儿童流程吗?复制/粘贴so并将其称为libfoo_1.so,libfoo_2.so等。(aargh!)还有其他解决方案吗?

谢谢

西蒙

如果库没有API,这意味着它使用.Init机制运行代码,那么您没有比分叉过程中的过程和子进程中的库更好的选择。/p>

实际上这很简单,只要您记得等待孩子在需要时终止的过程。

如果您需要处理父母和子过程之间的通信,则有几种可用的过程间通信方法,例如管道。