uselib - eine gemeinsam benutzte Bibliothek laden
#include <unistd.h>
[[veraltet]] int uselib(const char *bibliothek);
Der Systemaufruf
uselib() dient dazu, eine gemeinsam benutzte Bibliothek
für die Nutzung durch den aufrufenden Prozess zu laden. Ihr wird ein
Pfadname übergeben. Die Ladeadresse befindet sich wird in der
Bibliothek selbst. Die Bibliothek kann jedes bekannte binäre Format
haben.
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1
zurückgegeben und
errno gesetzt, um den Fehler anzuzeigen.
Zusätzlich zu all den Fehlercodes, die von
open(2) und
mmap(2) zurückgegeben werden, können auch folgende
auftreten:
- EACCES
- Die durch bibliothek angegebene Bibliothek hat kein
Lese- oder Ausführrecht oder der Aufrufende hat kein Suchrecht
für eines der Verzeichnisse im Pfadpräfix. (Siehe auch
path_resolution(7).)
- ENFILE
- Die systemweite Beschränkung für die
Gesamtzahl offener Dateien wurde erreicht.
- ENOEXEC
- Die Datei, die durch bibliothek angegeben wird, ist
keine ausführbare Datei eines bekannten Typs. Sie hat zum Beispiel
nicht die richtigen magischen Zahlen.
uselib() ist Linux-spezifisch und sollte nicht in portierbaren Programmen
benutzt werden.
Dieser veraltete Systemaufruf wird von Glibc nicht unterstützt. In den
Glibc-Headern wird keine Deklaration bereitgestellt, allerdings exportierte
Glibc vor 2.23 durch eine Laune der Geschichte eine ABI für diesen
Systemaufruf. Um diesen Systemaufruf einzusetzen, reichte es aus, manuell die
Schnittstelle in Ihrem Code zu deklarieren; alternativ könnten Sie den
Systemaufruf mittels
syscall(2) auslösen.
In uralten Libc-Versionen (vor Glibbc 2.0) wurde
uselib() benutzt, um die
gemeinsam benutzten Bibliotheken zu laden, die mit Namen in einem Namensfeld
in der Binärdatei gefunden wurden.
Seit Linux 3.15 ist der Systemaufruf nur verfügbar, falls der Kernel mit
der Option
CONFIG_USELIB konfiguriert wurde.
ar(1),
gcc(1),
ld(1),
ldd(1),
mmap(2),
open(2),
dlopen(3),
capabilities(7),
ld.so(8)
Die deutsche Übersetzung dieser Handbuchseite wurde von Hanno Wagner
<
[email protected]>, Chris Leick
<
[email protected]> und Dr. Tobias Quathamer <
[email protected]>
erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer