gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:30 25 4
gpt4 key购买 nike

我的任务是设计一个小型守护进程(在 Debian Linux 上),它将使用黑盒 libfoo.so 与外部 EFT 终端进行通信。有多个相同的 EFT 终端(大约 100 个),一个 libfoo.so 实例只能与一个终端通信。有一个 init 调用,它本质上将实例绑定(bind)到终端。

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

由于我们需要处理与多个终端的并发通信(大约 10 个并发线程),因此我们需要加载 libfoo.so 的多个实例。我正在寻找如何解决此类需求的设计原则(dlopen 只会加载 SO 一次,JNI 也是如此)。我需要生成子进程吗?复制/粘贴 SO 并将其命名为 libfoo_1.so、libfoo_2.so 等。(啊!)还有其他解决方案吗?

谢谢

西蒙

最佳答案

如果库没有 API,这意味着它使用 .init mechanism 运行其代码,那么你没有比 fork 一个父进程并在子进程中 dlopen 库更好的选择了。

这其实很简单,只要你记住 wait让您的子进程在需要时终止。

如果需要处理父进程和子进程之间的通信,有几个 Inter-process Communication可用的方法,例如 pipes .

关于c++ - 如何独立多次加载共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com