Vérifiez si un répertoire est vide en utilisant C sous Linux

Est-ce la bonne manière de vérifier si un répertoire est vide ou n'est pas en C? Est-il un moyen plus efficace de vérifier pour un répertoire vide, surtout si elle a 1000s de fichiers si ce n'est pas vide?

int isDirectoryEmpty(char *dirname) {
  int n = 0;
  struct dirent *d;
  DIR *dir = opendir(dirname);
  if (dir == NULL) //Not a directory or doesn't exist
    return 1;
  while ((d = readdir(dir)) != NULL) {
    if(++n > 2)
      break;
  }
  closedir(dir);
  if (n <= 2) //Directory Empty
    return 1;
  else
    return 0;
}

Si ses un répertoire vide, readdir va s'arrêter après les entrées '.' et '..' et donc vide si n<=2.

Si son vide ou n'existe pas, il doit retourner 1 sinon retourner 0

Mise à jour:

@c$ time ./isDirEmpty /fs/dir_with_1_file; time ./isDirEmpty /fs/dir_with_lots_of_files
0

real    0m0.007s
user    0m0.000s
sys 0m0.004s

0

real    0m0.016s
user    0m0.000s
sys 0m0.008s

Pourquoi faut-il prendre plus de temps pour vérifier si un répertoire avec beaucoup de fichiers comme par rapport à celui avec juste un fichier?

source d'informationauteur freethinker