Il existe un mécanisme permettant de modifier le comportement d'un processus en modifiant certains appels de fonction qu'il utilise. Je l'ai mis en œuvre pour la première fois il y a quelques années et depuis, je pourrais presque dire qu'il a rendu ma vie d'informaticien plus agréable. ;) Je vous propose donc de le découvrir.
1. Introduction
Vous savez sans doute que la plupart des programmes Linux utilisent des librairies partagées. La commande ldd permet de les lister :
$ ldd /bin/grep
linux-gate.so.1 => (0x0033f000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x00d74000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000)
/lib/ld-linux.so.2 (0x00b8e000)
$ ldd /bin/cat
linux-gate.so.1 => (0x00b59000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x0043b000)
/lib/ld-linux.so.2 (0x00e65000)
$
L'intérêt des librairies partagées apparaît évident dans cet exemple : on a factorisé une grande partie du code binaire commun à ces deux exécutables. Cela permet de réduire la taille disque (et mémoire) nécessaire et de faciliter la maintenance (si on corrige un bug dans la libc, on a juste à mettre à jour cette librairie, pas besoin de recompiler tous les programmes qui l'utilisent).
Quand on lance un...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première