#include <sys/stat.h.h>
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
.
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 |
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é.
LINK_MAX
PATH_MAX
caractères, ou l'un de ses éléments constitutifs dépasse NAME_MAX
.
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; } |
POSIX 88 (IEEE Std 1003.1-1988) et versions ultérieures.
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 :