如何独立多次加载共享对象
How to load a shared object multiple times independently
我的任务是设计一个小守护程序(在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>
实际上这很简单,只要您记得等待孩子在需要时终止的过程。
如果您需要处理父母和子过程之间的通信,则有几种可用的过程间通信方法,例如管道。
相关文章:
- 加载共享库时C++错误:libopencv_ximgproc.so.4.4
- 从 CMake 中的库目录加载共享库?
- 无法使用 python ctypes 加载C++共享库
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 在 win32 上生成 R 包:无法加载共享对象 (.dll)
- 加载共享库时出错:libbsoncxx.so._noabi:无法打开共享对象文件:没有此类文件或目录
- 在 Linux 上,在 C++ 程序中,如何找到已加载共享库的路径?
- 如何更改路径以修复错误"./main:加载共享库 libmkl_core.so 时出错?
- 正在加载共享对象:文件中未定义版本Qt_5
- 将生成文件转换为CMakeLists;无法加载共享库
- 加载共享库时出现"错误:libSDL2_mixer-2.0.so.0:无法打开共享对象文件:没有这样的文件或目录
- 使用dlopen动态加载共享库
- 交叉编译 qt:加载共享库时出错
- 加载共享库时出现 Codelite 错误,但我可以编译它
- 加载共享库时出错:JVM.dll
- 如何在Linux上热重新加载共享库
- 在共享C++库中加载共享库时C++未定义的符号,该库本身由 Python 加载
- 在 Windows 中加载共享库时在特定路径中选取 dll
- 一种在没有 root 的情况下加载共享库的更简单方法
- C++ Linux 加载共享库时出错“未定义的符号:pthread_create”