8.5 dl --- Appel des fonctions C en libraries partagées

Disponibilité: Unix

Le module dl est une interface à la fonction dlopen(). Cette fonction est la plus utilisée sur les plateformes Unix, en ce qui concerne le chargement de librairies dynamiques à l'exécution dans un logiciel.

Note: Ce module ne marche que si

sizeof(int) == sizeof(long) == sizeof(char *)
Dans le cas contraire, l'exception SystemError est levée à l'import.

Le module dl déclare les fonctions suivantes:

open(name[, mode = RTLD_LAZY])
Ouvre un fichier objet partagé et retourne une référence. Le mode spécifie si la résolution de l'édition de liens se fait tardivement (RTLD_LAZY) ou immédiatement (RTLD_NOW). Par défaut, RTLD_LAZY est utilisé. Il faut remarquer que certains systèmes n'acceptent pas RTLD_NOW.

La valeur de retour est un dlobject.

Le module dl défini les constantes suivantes:

RTLD_LAZY
Valeur pour le mode argument de open().

RTLD_NOW
Valeur pour le mode argument de open(). Si le système hôte ne permet pas l'édition immédiate, cette constante n'existe pas. Il est alors préférable d'utiliser hasattr() pour déterminer si la constante est présente ou pas, et donc si votre système permet l'édition de liens dynamique immédiate.

Le module dl défini les exceptions suivantes:

error
L'exception est levée si une erreur survient lors du chargement de la librarie dynamique ou lors de l'édition de liens dynamique.

Exemple:

>>> import dl, time
>>> a=dl.open('/lib/libc.so.6')
>>> a.call('time'), time.time()
(929723914, 929723914.498)

Cet exemple a été essayé sur un système Debian GNU/Linux et c'est un bon exemple sur le fait que l'utilisation de ce module est une mauvaise alternative.


Sous-sections
  1. Les objets de Dl