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 mkdir - Entête <sys/stat.h>

#include <sys/stat.h.h>

Fonction mkdir

int mkdir( const char * path, mode_t mode );

Permet de créer un nouveau dossier (mkdir = MaKe DIRectory). Vous devez, lors de la création du nouveau dossier, spécifier les droits initiaux du dossier : cela se fait via le second paramètre mode.

il est possible, en langage, C de spécifier un entier en base octale (base 8), en débutant votre entier via le caractère 0. La gestion des droits Unix/Linux étant basée sur une représentation en base octale, je vous recommande conserver cette façon de faire pour spécifier les droits du nouveau dossier.
 1 
int result = mkdir( "newFolder", 0755 );   // drwxr-xr-x
Spécification des droits du nouveau dossier en base octale.

Paramètres

Valeur de retour

Si la création du nouveau dossier 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 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>

#include <unistd.h>        // chdir
#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 );
        switch( errno ) {
            case EACCES:
                fprintf( stderr, "\tTu n'as pas les droits\n" );
                break;
            case EEXIST:
                fprintf( stderr, "\tLe dossier existe déjà.\n" );
                break;
            default:
                fprintf( stderr, "\tJe ne t'en dirais pas plus ;-)" );
        }
        exit( EXIT_FAILURE );
    }
    
    if ( chdir( PATH ) != 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 mkdir

Conformité

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

Sujets connexes