GNU/Linux >> Tutoriels Linux >  >> Linux

Quel appel système Linux est utilisé par la commande ls sous Linux pour afficher le nom du dossier/fichier ?

La plupart des appels système génèrent du bruit lors du chargement des bibliothèques partagées au démarrage. Les choses intéressantes se passent ici :

openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 2 entries */, 32768)     = 48
getdents(3, /* 0 entries */, 32768)     = 0
close(3)  

Le openat(2) l'appel système permet d'ouvrir le répertoire courant ("." ) par rapport au répertoire de travail courant (le AT_FDCWD drapeau). Le O_DIRECTORY flag indique qu'il veut ouvrir le répertoire et lire le contenu du répertoire.

Les données réelles du répertoire sont lues à l'aide du getdents(2) appel système. Dans ce cas, il l'a appelé deux fois, car jusqu'à ce qu'il renvoie 0, il n'est pas sûr s'il y a plus de données ou non. Enfin, le descripteur de fichier est fermé une fois terminé.

Si vous deviez écrire votre propre programme, cependant, vous ne les appelleriez pas directement - à la place, vous utiliseriez opendir(3) , readdir(3) , et closedir(3) pour lire un répertoire. Ils sont portables (conformes à POSIX) et vous isolent des détails des appels système sous-jacents. Ils sont également plus faciles à utiliser, IMO.


Linux
  1. Comment utiliser la commande Tar sous Linux

  2. Comment supprimer un répertoire et un dossier sous Linux ?

  3. Linux - La barre oblique (/) fait-elle partie du nom du répertoire racine Linux ?

  4. Exemples essentiels de la commande File sous Linux

  5. Quelle commande du shell sh Linux/UNIX renvoie mon répertoire actuel ?

Commande Fsck sous Linux (réparer le système de fichiers)

Supprimer le répertoire sous Linux - Comment supprimer un dossier de la ligne de commande

Afficher le contenu d'un fichier dans la ligne de commande Linux

Comment utiliser la commande fd sur le système Linux

La commande Linux find Directory :Explication

Comment utiliser la commande which sous Linux