#include <stdio.h> #include <dirent.h> #include <stdlib.h> #include <sys/stat.h> // une macro définition // attention ce n'est pas une fonction! #define LISIBLE_PAR_L_UTILISATEUR(m) (m&S_IRUSR) int main(int argc,char *argv[]) { struct dirent *de; struct stat infos; // Ouvertuyre du répertoire courant en lecture DIR *dir = opendir("."); if (dir==NULL) { perror("probleme avec ."); exit(1); } // Lecture itérative d'entrée de répertoire while ( (de=readdir(dir)) != NULL) { // Récupération des méta-informations associées à l'inœud associé à la référence donnée if (stat(de->d_name,&infos)!=-1) { // Affichage de différentes informations printf("%lld %c%c%c%c %d %4d %12lld %s\n", infos.st_ino, S_ISDIR(infos.st_mode)?'d':'-', LISIBLE_PAR_L_UTILISATEUR(infos.st_mode)?'r':'-', (infos.st_mode&S_IWUSR)?'w':'-', (infos.st_mode&S_IXUSR)?'x':'-', infos.st_uid, infos.st_nlink, infos.st_size, de->d_name); } } // Libération des ressources associées closedir(dir); exit(0); }