dlclose 子例程

用途

关闭并卸载由 dlopen 子例程装入的模块。

语法

#include <dlfcn.h>
int dlclose(Data);
void *Data;

描述

dlclose 子例程用于除去对使用 dlopen 子例程装入的模块的访问。 此外,还会除去对正在卸载的模块的从属模块的访问权。

dlclose子程序执行 C++ 终止,就像terminateAndUnload子程序一样。

如果其他模块仍需要使用 dlclose 子例程卸载的模块,那么将不会从进程的地址空间中除去这些模块。 但是, 数据 的后续使用无效,并且要卸载的模块导出的符号的进一步使用会导致未定义的行为。

参数

描述
DATA 先前调用 dlopen时返回的已装入模块引用。

返回值

成功完成后,0返回 (零)。 否则, errno 设置为 EINVAL,并且返回值也是 EINVAL。 即使 dlclose 子例程成功,如果其他模块仍需要该模块,那么指定的模块仍可能是进程地址空间的一部分。

错误代码

描述
EINVAL Data 参数不引用仍处于打开状态的 dlopen 打开的模块。 该参数可能已损坏,或者模块可能已由先前对 dlclose的调用卸载。