如果我的进程崩溃,dlopen-ed 库会发生什么情况?

What happens to a dlopen-ed library if my process crashes?

根据文档,dlclose 递减引用计数器。但是,如果我的进程崩溃了,或者如果我没有在它完成之前调用 dlclose 它,会发生什么情况?引用计数器是否仍会递减,如果是,如何递减?

According to the documentation, dlclose decrements a reference counter.

此引用计数器位于动态加载程序内部,仅在特定进程中有意义。它对 OS(无关紧要)没有任何意义。

But what happens if my process crashes, or if I don't call dlclose it before it finishes?

你的过程“蒸发成稀薄的空气”。该进程本地的任何引用计数都会随之消失。

Will the reference counter still get decremented, and if so, how?

引用计数将不复存在。

但是,OS 对任何打开的文件和进程建立的 mmap 映射保持自己的引用计数(仅与 dlopen() 间接相关),并且 OS 减少这些计数。如果因此,任何此类引用计数下降到 0,则相应的映射将被删除(通过 OS)。