2 votes

Fonctionnement des liens symboliques de la boîte à outils

Sur mon émulateur Android, le dossier /system/bin contient plusieurs liens symboliques qui pointent vers le binaire de la boîte à outils :

# ls -l /system/bin
ls -l /system/bin
[SNIP]
lrwxr-xr-x root     shell             2012-08-23 07:01 ls -> toolbox
lrwxr-xr-x root     shell             2012-08-23 07:01 lsmod -> toolbox
lrwxr-xr-x root     shell             2012-08-23 07:01 lsof -> toolbox
[SNIP]
-rwxr-xr-x root     shell      181002 2012-08-23 07:01 toolbox
[SNIP]
#

Si j'ai bien compris, 'toolbox' est un binaire capable de faire tout ce que ls, lsmod, lsof etc... peuvent faire, et appeler 'ls -l' revient à appeler 'toolbox ls -l'.

Mais je ne comprends pas comment cela fonctionne : si 'ls' est effectivement un lien symbolique vers 'toolbox', alors 'ls -l' deviendrait 'toolbox -l', ce qui ne fonctionne évidemment pas.

Qu'est-ce qui m'échappe ? (ou autrement dit : qu'est-ce qui fait que 'ls -l' devient 'toolbox ls -l' ?)

3voto

Milner Points 533

Ce que vous manquez, c'est.. : L'application (dans votre cas toolbox ) peut évaluer comment il a été appelé. Pour donner un exemple simple sous Linux : Supposons que vous ayez un script appelé myscript et l'appeler avec les paramètres para1 para2 (c'est-à-dire myscript para1 para2 ), et le script a une ligne :

echo $0 $1 $1

Il produirait exactement ce que vous avez appelé : myscript para1 para2 . Créez maintenant un lien symbolique : ln -s myscript mylink , appeler mylink para1 para2 et devinez ce qu'il fera "echo" : la ligne de commande que vous avez appelée. Ainsi, l'analyse de la ligne de commande, basée sur le lien symbolique de votre fichier toolbox a été appelé par, il peut déterminer quelle fonctionnalité vous visiez.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X