Écrire un greffon

Problème

Vous souhaitez profiter de dlopen() pour écrire un greffon.

Solution

Écrivez l’API que chaque greffon devra respecter. Créez le chargeur de greffons (appel à dlopen(), puis exécution d’une fonction d’initialisation du greffon). Créez son déchargeur si nécessaire (exécution d’une fonction de destruction du greffon, suivie d’un appel à dlclose()). Enfin terminez par l’écriture du greffon lui-même.

Discussion

L’utilisation de dlopen() et dlsym() ouvre la voie vers la programmation de greffons (plug-in) car il est très facile de charger un greffon (une bibliothèque dynamique) avec dlopen() puis d’exécuter le code contenu dans ce greffon en lançant ses fonctions, dont vous obtenez les références avec dlsym(). Il est aussi très facile de programmer des greffons qui arrêteront le programme de manière inattendue si nous ne prenons pas au préalable quelques précautions.

Lors de la réalisation d’un système de greffons, il faut d’abord écrire en une API l’interface à laquelle le greffon doit se plier. Toutes les fonctions que le programme est susceptible d’appeler et que le greffon doit implémenter doivent être référencées. Dans ce référencement se trouve non seulement le nom des fonctions, mais aussi leur prototype, qui doit être immuable...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Lancer une fonction d'une bibliothèque dynamique
Suivant
Lancer une fonction du programme depuis la bibliothèque dynamique