【问题标题】:swapping out linked shared library at runtime在运行时换出链接的共享库
【发布时间】:2012-09-09 16:10:42
【问题描述】:

假设我有一个进程 X,然后它已经将一些共享库 Y 加载到它的地址空间中。然后我设法将这个库 Y 替换为不同版本的 Yprime,这会对过程产生什么影响?

【问题讨论】:

标签: linux shared


【解决方案1】:

没有效果。加载器保持库处于打开状态,直到进程结束(或直到通过dlclose(3) 卸载库),这意味着它继续使用相同(现已删除)的库,因为它的块仍然存在于磁盘上。

【讨论】:

  • 如果原地覆盖库文件怎么办?
  • @lanzz:然后是未定义的行为结果。
  • 是吗?一旦库被加载到内存中,我不明白为什么会重新读取原始磁盘块。还是直接映射库文件?
  • @boycy:由于页面是可执行的并且不可写,内核将丢弃它们而不是在需要时将它们交换出去。当它们从磁盘重新加载时,可能会发生坏事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
相关资源
最近更新 更多