#include <unistd.h>
int access( const char * pathname, int aMode );
La fonction access
vérifie l'existence et les autorisations d'accès au fichier spécifié par le paramètre pathname
.
L'information à vérifier doit être spécifié dans le paramètre aMode
.
|
.
Par exemple, pour tester l'existence et la permission de lecture, on utilisera F_OK | R_OK
.
La fonction access renvoie 0 si l'accès au fichier est autorisé en fonction du mode d'accès spécifié.
Si l'accès est refusé ou si une erreur s'est produite, la fonction renvoie -1
.
Si une erreur est constatée, la variable errno sera fixée avec le code erreur constaté.
pathname
spécifié en paramètre pointe en dehors de l'espace d'adressage autorisé.aMode
est invalide.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 |
#include <stdio.h> #include <stdlib.h> #include <unistd.h> // access int main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s <file>\n", argv[0]); return 1; } if (access(argv[1], F_OK) == 0) { printf("%s is existing\n", argv[1]); } else { perror("access"); exit(EXIT_FAILURE); } if (access(argv[1], R_OK) == 0) { printf("%s is readable\n", argv[1]); } if (access(argv[1], W_OK) == 0) { printf("%s is writable\n", argv[1]); } if (access(argv[1], X_OK) == 0) { printf("%s is executable\n", argv[1]); } return EXIT_SUCCESS; } |
Et voici un exemple d'exécution de ce programme.
$> gcc -o essai essai.c $> ./essai essai essai is existing essai is readable essai is writable essai is executable $> ./essai essai.c essai.c is existing essai.c is readable essai.c is writable $> ./essai essai2.c access: No such file or directory $>
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 :