Accès rapide :
Entête à inclure
Types et structures définis dans <sys/stat.h>
Fonctions définies dans <sys/stat.h>
Constantes et macros définies dans <sys/stat.h>
Exemple de code
Conformité
Sujets connexes
<sys/stat.h> n'appartient pas au langage C ISO : elle est définie par POSIX. Elle est disponible naturellement sur les systèmes Unix, Linux et macOS. Sous Windows, sa disponibilité dépend de l'environnement POSIX utilisé.
Cette entête regroupe les éléments nécessaires à la manipulation des métadonnées de fichiers : type de fichier, droits d'accès, propriétaire, groupe, taille, dates, création de dossiers ou de FIFO, et modification fine des horodatages.
#include <sys/stat.h>
| Type | Description |
|---|---|
blkcnt_t | Nombre de blocs alloués pour un objet du système de fichiers. Type associé à l'option XSI. |
blksize_t | Taille de bloc préférée pour les entrées/sorties. Type associé à l'option XSI. |
dev_t | Identifiant d'un périphérique. |
gid_t | Identifiant d'un groupe. |
ino_t | Numéro de série d'un fichier dans le système de fichiers. |
mode_t | Type stockant les droits et le type d'un fichier. |
nlink_t | Nombre de liens physiques associés à un fichier. |
off_t | Offset ou taille exprimée en octets. |
time_t | Temps exprimé en secondes depuis l'Epoch Unix. |
uid_t | Identifiant d'un utilisateur. |
struct stat | Structure contenant les métadonnées d'un fichier. |
struct timespec | Structure utilisée pour les horodatages fins, définie comme dans <time.h>. |
| Fonction | Description |
|---|---|
chmod | Change les droits d'accès d'un fichier désigné par son chemin. |
fchmod | Change les droits d'accès d'un fichier désigné par un descripteur. |
fchmodat | Change les droits d'un fichier à partir d'un dossier de référence et d'un chemin relatif. |
fstat | Récupère les métadonnées d'un fichier désigné par un descripteur. |
fstatat | Récupère les métadonnées d'un fichier à partir d'un dossier de référence et d'un chemin relatif. |
futimens | Modifie les horodatages d'un fichier désigné par un descripteur. |
lstat | Récupère les métadonnées d'un lien symbolique sans le déréférencer. |
mkdir | Crée un dossier. |
mkdirat | Crée un dossier à partir d'un dossier de référence et d'un chemin relatif. |
mkfifo | Crée un fichier spécial FIFO. |
mkfifoat | Crée un fichier spécial FIFO à partir d'un dossier de référence. |
mknod | Crée un fichier spécial. Cette fonction est associée à l'option XSI. |
mknodat | Crée un fichier spécial à partir d'un dossier de référence. Cette fonction est associée à l'option XSI. |
stat | Récupère les métadonnées d'un fichier désigné par son chemin. |
umask | Fixe le masque de création des droits pour le processus courant. |
utimensat | Modifie les horodatages d'un fichier à partir d'un dossier de référence. |
Les constantes et macros de cette entête permettent de construire des droits d'accès, de tester le type d'un fichier et de piloter les fonctions d'horodatage.
| Élément | Description |
|---|---|
S_IFMT, S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFLNK, S_IFREG, S_IFSOCK | Masques et valeurs de type de fichier, associés à l'option XSI. |
S_ISBLK, S_ISCHR, S_ISDIR, S_ISFIFO, S_ISLNK, S_ISREG, S_ISSOCK | Macros de test du type de fichier à partir du champ st_mode. |
S_TYPEISMQ, S_TYPEISSEM, S_TYPEISSHM, S_TYPEISTMO | Macros de test pour certains objets POSIX particuliers. |
S_IRUSR, S_IWUSR, S_IXUSR, S_IRWXU | Droits d'accès du propriétaire. |
S_IRGRP, S_IWGRP, S_IXGRP, S_IRWXG | Droits d'accès du groupe. |
S_IROTH, S_IWOTH, S_IXOTH, S_IRWXO | Droits d'accès des autres utilisateurs. |
S_ISUID, S_ISGID, S_ISVTX | Bits spéciaux : set-user-ID, set-group-ID et sticky bit. |
UTIME_NOW, UTIME_OMIT | Valeurs spéciales pour futimens et utimensat. |
L'exemple suivant récupère les métadonnées d'un chemin et affiche quelques informations importantes.
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 |
#define _POSIX_C_SOURCE 200809L #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> int main(int argc, char * argv[]) { if (argc != 2) { printf("Usage: %s path\n", argv[0]); return EXIT_FAILURE; } struct stat informations; if (stat(argv[1], &informations) == -1) { perror("stat"); return EXIT_FAILURE; } printf("Taille : %ld octets\n", (long) informations.st_size); printf("Liens : %ld\n", (long) informations.st_nlink); if (S_ISDIR(informations.st_mode)) { puts("Type : dossier"); } else if (S_ISREG(informations.st_mode)) { puts("Type : fichier régulier"); } else { puts("Type : autre"); } return EXIT_SUCCESS; } |
Les éléments présentés ici suivent la définition POSIX de <sys/stat.h>. La référence utilisée est la documentation POSIX.1-2024 publiée par The Open Group :
<sys/stat.h>.
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 :