【发布时间】:2012-04-03 20:37:51
【问题描述】:
如果我的进程正在加载一个 .so 库,并且如果有新版本的库可用,是否可以在不重启进程的情况下切换到新库?或者答案取决于库中现有函数之一是否有参数更改?
我在一个相当大的系统中工作,该系统运行 100 个进程,每个进程加载 10 个库。这些库提供特定的功能,由不同的团队提供。因此,当库中的一个更改(可以说是错误修复)时,理想的做法是在不影响运行过程的情况下在后台发布它。有可能吗?
编辑谢谢!在我的情况下,当一个新库可用时,所有正在运行的进程都必须开始使用它。让他们使用旧版本运行并稍后再选择新版本是不可取的。所以看起来更安全的选择是重新加载进程。
【问题讨论】:
-
除非您控制所有可执行文件,否则如果没有像 ptracing 进程这样的丑陋黑客,就不可能热更新 so 文件。另外,linux不使用dll。
标签: c linux dll shared-libraries