Nous avons vu deux manières de charger un greffon. L'une utilise fork()
et l'autre dlsym
. La première a le gros avantage de laisser le programmeur de greffon libre du langage à utiliser (C, C++, script, Perl...). La seconde a le gros avantage d'être rapide, puisque le chargement de bibliothèques partagés est bien plus rapide qu'un fork()
suivi d'un execve()
. Et il est d'autant plus rapide que le greffon est compilé, ce qui ne sera probablement pas le cas pour la première manière de lancer un greffon.
Chacune de ces deux méthodes a un intérêt, et vous êtes seul juge pour savoir quelle méthode est la plus appropriée. Mais je me permettrai d'influencer le juge en lui disant qu'il suffit d'avoir un greffon, à charger avec dlopen()
, capable de faire un fork()
pour qu'un chargeur conçu uniquement pour les greffons à charger via dlopen()
soit capable de charger aussi les greffons autres. Ce greffon est alors lui-même un chargeur.
© 2002 Yves Mettier