gpt4 book ai didi

c - 加载了 dlopen 的共享库是否会自动关闭?

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

如果我使用 dlopen 打开一个动态库并且我的程序在没有相应的 dlclose 的情况下终止,引用计数会减少吗?如果不是,会发生什么?在下次重新启动之前,库是否会保持加载状态?

最佳答案

动态加载程序是一个用户空间代码(linux/glibc 中的 ld.so.1)。它被加载到您正在运行的程序的用户空间,并且不与其他进程交互。所以没有全局引用计数器。

但是,有一种方法可以在进程之间共享动态库代码。动态加载器使用 mmap() 在进程内存中加载库代码。同一个库的 mmap 数据将在使用它的所有进程之间共享(直到它们向这些数据页写入任何内容,这将使用 COW 创建它们自己的数据副本)。当您的程序终止时,所有 mmap ed 区域都将被释放。您可能认为这是一种引用计数器递减 - 您的数据页副本现在已释放。

关于c - 加载了 dlopen 的共享库是否会自动关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14351727/

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