#include <dirent.h>
int dirfd( DIR * dirp );
La fonction dirfd renvoie le descripteur de fichier associé au flux de dossier passé en paramètre. Elle permet de faire le lien entre l'API de parcours des dossiers et certaines fonctions POSIX qui travaillent directement sur des descripteurs.
La fonction renvoie le descripteur de fichier associé au flux de dossier. En cas d'erreur, elle renvoie -1 et positionne errno.
dirfd. Le flux reste propriétaire de cette ressource et sa fermeture doit être réalisée via closedir.
L'exemple suivant récupère le descripteur associé au dossier courant afin d'interroger ses métadonnées avec fstat.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#define _POSIX_C_SOURCE 200809L #include <dirent.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> int main(void) { DIR * directory = opendir("."); if (directory == NULL) { perror("opendir"); return EXIT_FAILURE; } int fd = dirfd(directory); if (fd == -1) { perror("dirfd"); closedir(directory); return EXIT_FAILURE; } struct stat informations; if (fstat(fd, &informations) == -1) { perror("fstat"); closedir(directory); return EXIT_FAILURE; } printf("Numéro de série : %ld\n", (long) informations.st_ino); closedir(directory); return EXIT_SUCCESS; } |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :