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.