Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

dlclose - Objekt schließen

&pagelevel(3)&pagelevel

Syntax


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


dlclose() kann mit identischer Syntax auch in einer ASCII-Umgebung aufgerufen werden Da dlclose() keine Strings verwendet, ist dazu keine eigene ASCII-Variante notwendig.

Beschreibung

Mit Hilfe von dlclose() wird dem System mitgeteilt, dass das Objekt, auf das ein von einem vorausgehenden dlopen()-Aufruf zurückgegebenes Handle (handle) verweist, von der Anwendung nicht mehr benötigt wird.

Sobald ein Objekt mit Hilfe von dlclose() geschlossen wurde, kann die Anwendung davon ausgehen, dass die zugehörigen Symbole nicht mehr für dlsym() verfügbar sind. Alle Objekte, die infolge des dlopen()-Aufrufs für das Objekt, auf das verwiesen wird, automatisch geladen wurden, werden ebenfalls geschlossen.

Returnwert

Wenn das Objekt, auf das verwiesen wird, erfolgreich geschlossen wurde, gibt dlclose() den Wert 0 zurück.

Wenn das Objekt nicht geschlossen werden konnte oder handle nicht auf ein geöffnetes Objekt verweist, gibt dlclose() einen anderen Wert zurück.

Die Variable errno wird nicht gesetzt. Ein Fehlertext (Diagnoseinfo) kann über dlerror() ermittelt werden.

Hinweis

Das von einem dlopen()-Aufruf in handle zurückgegebene Handle sollte nur zwischen einem dlopen()- und einem dlclose()-Aufruf verwendet werden. Bei mehreren Aufrufen von dlopen() wird bei Verweisen auf dasselbe Objekt immer dasselbe Objekt in handle zurückgegeben. Ebenso kann handle auch mehrmals verwendet werden. Daher muss der Wert von handle von der Anwendung als transparentes Objekt behandelt werden, das nur in dlsym()- und dlclose()-Aufrufen benutzt wird.

Bei C++ werden beim Schließen des Shared Object sprachspezifische Finalisierungen durchgeführt.

Durch dlclose() wird das adressierte Shared Object als nicht mehr zugänglich gekennzeichnet. Ein physikalisches Entladen des Objekts wird nur dann durchgeführt, falls es keine anderen Shared Objects gibt, die Referenzen auf dieses Objekt haben oder haben könnten.

Beispiel

Das folgende Beispiel veranschaulicht, wie dlclose() verwendet werden kann.

void    *handle; 
int ret;

/* Objekt schliessen */ 
if ((ret = dlclose(handle)) != 0) {
    printf (error during dlclose, ret: %d dlerror: %s\n”, ret, dlerror());
    exit(EXIT_FAILURE);
}

Siehe auch

dlerror(), dlopen(), dlsym()