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 :

Fonction fchdir - Entête <unistd.h>

#include <unistd.h>

Fonction fchdir

int fchdir( int fileDescriptor );

Cette fonction permet de changer le répertoire courant de travail. Le chemin vers le nouveau dossier doit être passé en paramètre sous forme d'un descripteur de fichier.

cette fonction est quasiment identique à la fonction chdir. La différence réside dans le fait que le nouveau répertoire de travail est exprimé via une chaîne de caractères avec la fonction chdir, alors qu'il est exprimé via un descripteur de fichier avec la fonction fchdir.

Paramètre

Valeur de retour

Si tout se passe bien, la fonction renvoie la valeur 0. Dans le cas contraire, la valeur -1 vous sera retournée et la variable errno sera fixée avec le code erreur constaté.

Codes erreurs pouvant être retournés

Exemple de code

L'exemple de code suivant permet de créer un dossier test dans le répertoire courant et de s'y placer avant de créer un nouveau fichier.

 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 
#include <stdio.h>
#include <stdlib.h>

#include <fcntl.h>         // O_RDONLY
#include <unistd.h>        // fchdir
#include <sys/stat.h>      // mkdir

#define PATH "test"

int main() {

    if ( mkdir( PATH, 0755 ) != 0 ) {
        fprintf( stderr, "Impossible de créer le dossier %s.\n", PATH );
        exit( EXIT_FAILURE );
    }
    
    int fd = open( PATH, O_RDONLY );
    if ( fchdir( fd ) != 0 ) {
        fprintf( stderr, "Impossible de se placer dans le dossier %s.\n", PATH );
        exit( EXIT_FAILURE );
    }
    
    FILE * file = fopen( "essai.txt", "w" );
    if ( file == NULL ) {
        fprintf( stderr, "Impossible d'ouvrir le fichier en écriture.\n" );
        exit( EXIT_FAILURE );
    }

    fprintf( file, "Ok" );
    fclose(file);
    
    return EXIT_SUCCESS;
}
Exemple d'utilisation de la fonction fchdir

Conformité

POSIX 88 (IEEE Std 1003.1-1988) et versions ultérieures.

Sujets connexes