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的调用卸载。 |