使用 terminateAndUnload 函数终止并卸载模块

terminateAndUnload 函数采用相同的参数,并返回与 unload 例程相同的值和错误代码。 请参阅 技术参考: 基本操作系统和扩展,卷 1 和 2 中的 unload 例程以获取更多信息。

格式

#include <load.h>
int terminateAndUnload(int (*FunctionPointer)());

描述

terminateAndUnload 函数执行所需的任何 C++ 终止,并卸载模块 (共享库)。 loadAndInit 例程返回的函数指针用作 terminateAndUnload 函数的参数。 如果这是最近一次卸载共享库,那么将对此共享库以及最近一次卸载的任何其他共享库执行任何 C++ 终止。 terminateAndUnload 函数确保共享库仅终止一次,即使 dlclose 也用于卸载该库也是如此。 终止顺序是 loadAndInit 函数执行的初始化的反向顺序。 如果在 C++ 终止期间发生任何未捕获的异常,那么将停止终止并卸载共享库。

如果对共享库调用 loadAndInit 函数的次数超过 terminateAndUnload,那么共享库将永远不会执行 C++ 终止。 如果您依赖于在调用 terminateAndUnload 函数时执行的 C++ 终止,请确保对 terminateAndUnload 函数的调用次数与对 loadAndInit 函数的调用次数匹配。 如果使用 loadAndInit 函数装入的任何共享库在程序退出时仍在使用,那么将执行 C++ 终止。

如果 terminateAndUnload 函数用于卸载未随 loadAndInit 函数一起装入的共享库,那么不会执行终止。

参数

FunctionPointer
指定 loadAndInit 函数返回的函数的名称。

返回值

成功完成 terminateAndUnload 函数将返回值 0 ,即使未执行 C++ 终止并且未卸载共享库,因为共享库仍在使用中。

如果 terminateAndUnload 功能失效,则返回 -1 值并设置 errno 以指示错误。