Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Fonction dirfd (POSIX)

Entête à inclure

#include <dirent.h>

Fonction dirfd

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.

Paramètres

Valeur de retour

La fonction renvoie le descripteur de fichier associé au flux de dossier. En cas d'erreur, elle renvoie -1 et positionne errno.

Ne fermez pas directement le descripteur renvoyé par dirfd. Le flux reste propriétaire de cette ressource et sa fermeture doit être réalisée via closedir.

Exemple de code

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;
}
Accès au descripteur d'un dossier

Sujets connexes

closedir
DIR *
fdopendir
opendir
<sys/stat.h>


Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé