#include <unistd.h>
int rmdir( const char * path );
Cette fonction permet de supprimer le dossier spécifié en paramètre (rmdir
= ReMove DIRectory).
rmdir
renverra une erreur (variable errno fixée à ENOTEMPTY
).
Si tout se passe bien, la fonction renvoie 0
.
Dans le cas contraire, la valeur -1
vous sera retournée et la variable errno sera fixée avec le code erreur
constaté.
path
spécifié en paramètre pointe en dehors de l'espace d'adressage autorisé.PATH_MAX
caractères, ou l'un de ses éléments constitutifs dépasse NAME_MAX
.EROFS
= Error Read Only File System).
L'exemple de code suivant permet de créer un dossier test
puis tente de le supprimer : deux essais seront nécessaires.
Effectivement, pendant quelques instants, un fichier est crée dans le dossier, empêchant ainsi sa suppression.
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 43 44 |
#include <errno.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> // rmdir #include <sys/stat.h> // mkdir #define DIRECTORY "test" #define FILENAME "test/essai.txt" int main() { if ( mkdir( DIRECTORY, 0755 ) != 0 ) { fprintf( stderr, "Impossible de créer le dossier %s.\n", DIRECTORY ); exit( EXIT_FAILURE ); } printf( "Création du dossier %s effectuée!\n", DIRECTORY ); FILE * file = fopen( FILENAME, "w" ); if ( file == NULL ) { fprintf( stderr, "Impossible d'ouvrir le fichier en écriture.\n" ); exit( EXIT_FAILURE ); } fprintf( file, "Ok" ); fclose(file); while( true ) { if ( rmdir( DIRECTORY ) == 0 ) { printf( "Dossier %s supprimé!\n", DIRECTORY ); break; } else if ( errno == ENOTEMPTY ) { printf( "Ouups, on a oublié le fichier %s!\n", FILENAME ); remove( FILENAME ); } else { fprintf( stderr, "Erreur inconnue rencontrée lors de la suppression du dossier %s\n", DIRECTORY ); } } printf( "Bye bye\n" ); return EXIT_SUCCESS; } |
Et voici les résultats produits par cet exemple de code.
$> gcc -o sample sample.c $> ./sample Création du dossier test effectuée! Ouups, on a oublié le fichier test/essai.txt! Dossier test supprimé! Bye bye $>
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 :