Lancer une fonction du programme depuis la bibliothèque dynamique

Problème

Vous souhaitez proposer la possibilité à la bibliothèque dynamique d’exécuter une fonction de votre programme, telle qu’une fonction de notification d’erreur. 

Solution

Disposez d’un pointeur sur la fonction du programme à exécuter dans la bibliothèque dynamique. Après son chargement avec dlopen(), exécutez une fonction de la bibliothèque dynamique dont l’argument est un pointeur sur la fonction du programme à exécuter. Cette fonction de la bibliothèque dynamique stocke cet argument dans le pointeur réservé à cet effet.

Discussion

Supposons que la fonction du programme à exécuter depuis la bibliothèque dynamique s’appelle prog_log(), de prototype void prog_log(const char*). Voici le code à placer dans la bibliothèque dynamique :

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
Écrire un greffon
Suivant
Créer une bibliothèque dynamique liée statiquement aux bibliothèques dont elle dépend