trusty (3) dlclose.3posix.gz

Provided by: manpages-posix-dev_2.16-1_all bug

NAME

       dlclose - close a dlopen object

SYNOPSIS

       #include <dlfcn.h>

       int dlclose(void *handle);

DESCRIPTION

       The  dlclose()  function  shall  inform the system that the object referenced by a handle returned from a
       previous dlopen() invocation is no longer needed by the application.

       The use of dlclose() reflects a statement of intent on the part of the process, but does not  create  any
       requirement upon the implementation, such as removal of the code or symbols referenced by handle. Once an
       object has been closed using dlclose() an application should  assume  that  its  symbols  are  no  longer
       available to dlsym(). All objects loaded automatically as a result of invoking dlopen() on the referenced
       object shall also be closed if this is the last reference to it.

       Although a dlclose() operation is not required to remove structures from an address space, neither is  an
       implementation  prohibited  from doing so. The only restriction on such a removal is that no object shall
       be removed to which references have been relocated, until or unless all such references are removed.  For
       instance,  an object that had been loaded with a dlopen() operation specifying the RTLD_GLOBAL flag might
       provide a  target  for  dynamic  relocations  performed  in  the  processing  of  other  objects-in  such
       environments,  an  application may assume that no relocation, once made, shall be undone or remade unless
       the object requiring the relocation has itself been removed.

RETURN VALUE

       If the referenced object was successfully closed, dlclose() shall return 0. If the object  could  not  be
       closed,  or  if  handle  does  not refer to an open object, dlclose() shall return a non-zero value. More
       detailed diagnostic information shall be available through dlerror().

ERRORS

       No errors are defined.

       The following sections are informative.

EXAMPLES

       The following example illustrates use of dlopen() and dlclose():

              ...
              /* Open a dynamic library and then close it ... */

              #include <dlfcn.h>
              void *mylib;
              int eret;

              mylib = dlopen("mylib.so", RTLD_LOCAL | RTLD_LAZY);
              ...
              eret = dlclose(mylib);
              ...

APPLICATION USAGE

       A conforming application should employ a handle returned from a dlopen() invocation only within  a  given
       scope  bracketed  by  the  dlopen()  and  dlclose() operations. Implementations are free to use reference
       counting or other techniques such that multiple calls to dlopen() referencing the same object may  return
       the  same  object  for  handle.   Implementations are also free to reuse a handle. For these reasons, the
       value of a handle must be treated as an opaque object by the application, used only in calls  to  dlsym()
       and dlclose().

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       dlerror() , dlopen() , dlsym() , the Base Definitions volume of IEEE Std 1003.1-2001, <dlfcn.h>

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition,
       Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open  Group  Base
       Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers,
       Inc and The Open Group. In the event of any discrepancy between this version and the  original  IEEE  and
       The  Open  Group  Standard,  the  original  IEEE and The Open Group Standard is the referee document. The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .