无需重新启动进程即可更新共享库

前端之家收集整理的这篇文章主要介绍了无需重新启动进程即可更新共享库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我的进程正在加载一个.so库,并且如果有一个新版本的库可以切换到新库而无需重新启动进程吗?或者答案取决于是否对库中的某个现有函数进行参数更改?

我在一个相当大的系统中工作,该系统运行100个进程,每个进程加载10个库.这些库提供特定功能,由不同的团队提供.因此,当其中一个库发生更改时(对于错误修复可以说),理想的做法是在不影响正在运行的进程的情况下将其发布到引擎盖下.可能吗 ?

编辑谢谢!在我的情况下,当一个新库可用时,所有正在运行的进程必须开始使用它.它不是让它们与旧版本一起运行并在以后提取新版本的选择.所以看起来更安全的选择就是重新加载进程.

解决方法

在运行进程的情况下,无法动态升级链接库.
您甚至可以尝试,但如果您已经成功(并且您不会因“正在使用的文本文件错误消息而失败),则必须重新启动该过程以使其将新库映射到内存中.

您可以使用lsof命令检查链接的库(运行时或链接时):

lsof -p <process_pid> | grep ' mem '

猜你在找的C&C++相关文章