J'ai un programme très simple ici, mais il semble retourner une "vraie" valeur à la requête S_ISDIR() même lorsque l'entrée du répertoire n'est pas un répertoire. Quelqu'un peut-il m'aider? J'utilise QNX RTOS NeurtionEn ce qui concerne la vérification de fichier ou de répertoire
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
#include <errno.h>
int main(int argc, char *argv[]) {
DIR *dir;
struct dirent *entry;
struct stat eStat;
char *root;
int i;
root = argv[1];
while((entry = readdir(dir)) != NULL) {
lstat(entry->d_name, &eStat);
if(S_ISDIR(eStat.st_mode))
printf("found directory %s\n", entry->d_name);
else
printf("not a dir\n");
}
return 0;
}
sortie
exemple:
found directory .
found directory ..
found directory NCURSES-Programming-HOWTO-html.tar.gz
found directory ncurses_programs
found directory ncurses.html
Les informations suivantes peuvent être utiles. lstat pour le fichier échoue avec errno mis à 2. Je ne sais pas pourquoi, quelqu'un peut le savoir.
oui, vous avez raison lstat retournant l'échec pour le fichier, je ne sais pas pourquoi il retourne l'échec, peut-on m'aider – Venkata
si (lstat (entrée-> nom_d, & eStat) == -1) perror (entrée -> d_name); –