dlopen/dlclose 计数问题。。。

你我他111 2008-04-13 11:06:36
有个共享库libX;有两个应用appA, appB. appA先运行,然后dlopen libX,且一直保持运行状态。然后appB开始运行,dlopen libB, 这时候对appB来说 libX的引用计数是几?
如果引用计数是对当前进程来说的,计数应该是1。如果整个系统只有一个对libX的计数,那么应该是2,因为appA也dlopen了。哪位大虾谈谈
...全文
208 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
你我他111 2008-04-14
  • 打赏
  • 举报
回复
多谢cceczjxy的回答。。。能再详细些么?这两种计数分别是干什么用的?哪个计数决定是否要对libB卸载?
cceczjxy 2008-04-14
  • 打赏
  • 举报
回复
对文件有个计数,它的计数是2
进程内有个计数,它的计数是1,
kabar_strider 2008-04-14
  • 打赏
  • 举报
回复
进程内的记数在进程退出的时候,判断是否有未释放的共享库,如果有未释放的,则释放。
文件的计数是调用dlclose的时候,判断是否从内存中解除映射。
可参考这两个变量:link_map.l_opencount,link_map.l_loader。
时间短暂,没仔细查找具体改变这两个变量的代码的具体位置,不对之处请指正。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧