dlclose.3c (2010 09)
d
dlclose(3C) dlclose(3C)
NAME
dlclose() - close a shared library
SYNOPSIS
cc [flag ... ] file ...
-ldl [library ]...
#include <dlfcn.h>
int dlclose(void *handle);
Multithread Usage
This routine is thread-safe.
NOTE: The dynamic loader serializes the loading and unloading of shared libraries in mul-
tithreaded applications using a recursive pthread mutex lock. See the HP-UX Linker and
Libraries Online User Guide for more information.
DESCRIPTION
dlclose() is one of a family of routines that give the user direct access to the dynamic linking facilities
(using the -ldl option on the compiler or
ld command line). dlclose() disassociates a shared object
previously opened by
dlopen() from the current process. Once an object has been closed using
dlclose(), its symbols are no longer available to
dlsym(). All objects loaded automatically as a
result of invoking
dlopen() on the referenced object (see dlopen(3C)) are also closed. handle is the
value returned by a previous invocation of dlopen().
RETURN VALUE
If the referenced object was successfully closed,
dlclose() returns 0. If the object could not be closed,
or if handle does not refer to an open object, dlclose() returns a non-0 value. More detailed diagnos-
tic information is available through dlerror().
ERRORS
If
dlclose() fails, a subsequent call to dlerrno() returns one of the following values.
[RTLD_ERR_CANT_APPLY_RELOC] Cannot apply relocation in library.
[RTLD_ERR_DLCLOSE_REMAINING_DEP] Cannot close library due to remaining dependen-
cies.
[RTLD_ERR_INV_HANDLE] Invalid handle.
[RTLD_ERR_NO_MEMORY] Out of memory.
[RTLD_ERR_SETCANCELSTATE_FAILED]
__thread_setcancelstate
failed on entry to
or exit from
dlclose().
[RTLD_ERR_SIGENABLE_FAILED]
sigenable failed on exit from dlclose().
[RTLD_ERR_SIGINHIBIT_FAILED]
siginhibit failed on entry to dlclose().
[RTLD_ERR_UNKNOWN_HANDLE] Unknown handle.
WARNINGS
A successful invocation of
dlclose() does not guarantee that the objects associated with handle have
actually been removed from the address space of the process. Objects loaded by one invocation of dlo-
pen() may also be loaded by another invocation of dlopen(). The same object may also be opened
multiple times. An object is not removed from the address space until all references to that object
through an explicit dlopen() invocation have been closed and all other objects implicitly referencing
that object have also been closed.
Once an object has been closed by
dlclose(), referencing symbols contained in that object can cause
undefined behavior.
SEE ALSO
dlerrno(3C), dlerror(3C), dlopen(3C), dlsym(3C).
Texts and Tutor ials
HP-UX Linker and Libraries Online User Guide
(See the
+help option)
HP-UX 11i Version 3: September 2010 − 1 − Hewlett-Packard Company 1