Question

Je voudrais savoir exactement comment le " est " Cette commande fonctionne sous Linux et Unix.

Pour autant que je sache, ls forks & amp; exec sur le shell Linux / Unix, puis obtient le résultat (de l’arborescence de fichiers actuelle, par exemple, / home / note /). J'ai besoin d'une explication plus détaillée, car je ne suis pas sûr de ce qui se passe après avoir appelé fork.

Quelqu'un peut-il expliquer la fonctionnalité de la commande 'ls' en détail?

Était-ce utile?

La solution

ls ne fourche pas. Le shell fourche et exécute afin d’exécuter toute commande qui n’est pas intégrée, et l’une des commandes qu’il peut exécuter est ls.

ls utilise opendir () et readdir () pour parcourir tous les fichiers du répertoire. S'il a besoin d'informations supplémentaires sur l'un d'entre eux, il appelle stat ().

Autres conseils

Pour ajouter à la réponse, dans le manuel Langage de programmation C (K & RC), ils ont donné un petit exemple sur la manière de mettre en œuvre ls. Ils ont très bien expliqué les infrastructures de données et les fonctions.

Pour comprendre ce que fait ls, vous pouvez jeter un œil à la source OpenSolaris: https://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/ls/ls.c .

Si cela vous gêne, sous Solaris, vous commencez par utiliser une structure pour examiner les appels système effectués par ls afin de comprendre son rôle. En utilisant une ferme, essayez:

truss -afl -o ls.out / bin / ls

puis regardez la sortie dans ls.out

Je pense que cette trace est l'équivalent d'une structure sous Linux.

Si vous voulez vraiment comprendre les détails détaillés de ls, regardez le code source. Vous pouvez suivre le lien de tpgould vers la source Solaris ou trouver facilement la source en ligne depuis n’importe quelle distribution Linux ou BSD.

Je recommande particulièrement la source 4.4BSD.

Si je me souviens bien, ls commence par analyser ses nombreuses options, puis par les fichiers ou répertoires répertoriés sur la ligne de commande (la valeur par défaut est "."). Les sous-répertoires sont gérés par récurrence dans la routine de liste de répertoires. Je ne me souviens pas de fork () ni de exec ().

Ceci est un ancien fil de discussion, mais je commente toujours car je pense que la réponse qui a été votée et acceptée est en partie incorrecte. @Mark dit que ls est construit dans un shell afin que celui-ci n'exécute pas et ne déclenche pas. Quand j’ai étudié le document tldp sur bash (j’ai joint le lien) " ls " n'est pas répertorié en tant que commande de construction.

http://tldp.org/LDP/Bash-Beginners- Guide / html / sect_01_03.html

Commandes intégrées Bash:

alias, bind, builtin, commande, déclarer, écho, activer, aide, laisser, local, déconnexion, printf, lire, shopt, type, typeset, ulimit et unalias.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top