uselib - Sélectionner une bibliothèque partagée
#include <unistd.h>
[[deprecated]] int uselib(const char *bibliothèque);
L'appel système
uselib() permet de charger une bibliothèque
partagée qui sera utilisée par le processus appelant. Il prend
un chemin de fichier comme argument. L'adresse où charger la
bibliothèque est trouvée dans la bibliothèque
elle-même. La bibliothèque peut avoir n'importe quel format de
binaire reconnu.
En cas de succès, zéro est renvoyé. En cas d'erreur,
-1 est renvoyé et
errno est définie pour
préciser l'erreur.
En plus de tous les codes d’erreurs renvoyés par
open(2) et
mmap(2), les codes suivants peuvent aussi être
renvoyés :
- EACCES
- La bibliothèque indiquée par
bibliothèque n'est pas accessible en lecture ou en
écriture, ou l'appelant n'a pas la permission de parcours pour l'un
des répertoires du chemin. (Consultez aussi
path_resolution(7).)
- ENFILE
- La limite du nombre total de fichiers ouverts pour le
système entier a été atteinte.
- ENOEXEC
- Le fichier décrit par bibliothèque
n'est pas un exécutable de type connu (par exemple n'a pas le bon
nombre magique).
uselib() est spécifique à Linux et ne devrait pas
être employé dans des programmes destinés à
être portables.
Cet appel système obsolète n'est pas pris en charge par la glibc.
Il n'est pas déclaré dans les en-têtes de la glibc mais,
par un caprice de l'histoire, la glibc avant la glibc 2.23 fournissait
une interface binaire pour cet appel système. Ainsi, il suffisait de
déclarer manuellement l'interface dans votre code pour utiliser cet
appel système. Sinon, vous pouvez l'invoquer en utilisant
syscall(2).
Dans les anciennes versions de la libc (avant la glibc 2.0),
uselib() était utilisé pour charger les
bibliothèques partagées dont les noms se trouvaient dans un
tableau de noms dans le binaire.
Depuis Linux 3.15, cet appel système n'est disponible que si le
noyau a été configuré avec l'option
CONFIG_USELIB.
ar(1),
gcc(1),
ld(1),
ldd(1),
mmap(2),
open(2),
dlopen(3),
capabilities(7),
ld.so(8)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Jean-Pierre Giraud <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]