Man page - statx(2)

Packages contains this manual

Available languages:

en fr ru

Manual

statx

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
Invoking statx():
Information renvoyée
Attributs de fichier
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
VOIR AUSSI
TRADUCTION

NOM

statx - Afficher l’état d’un fichier (Ă©tendu)

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <fcntl.h>
/* Définitions des constantes AT_* */
#include <sys/stat.h>

int statx(int dirfd , const char *restrict nom_chemin , int flags ,
unsigned int
mask , struct statx *restrict statxbuf );

DESCRIPTION

Cette fonction renvoie des informations sur un fichier, le stockant dans le tampon pointé par statxbuff . Le tampon renvoyé est une structure du type suivant :

struct statx {
__u32 stx_mask; /* Masque d’octets indiquant
les champs remplis */
__u32 stx_blksize; /* Taille de bloc pour les E/S du systĂšme de fichiers */
__u64 stx_attributes; /* Indicateurs d’attribut de fichier supplĂ©mentaire */
__u32 stx_nlink; /* Nombre de liens directs */
__u32 stx_uid; /* UID du propriétaire */
__u32 stx_gid; /* GID du propriétaire */
__u16 stx_mode; /* Type de fichier et mode */
__u64 stx_ino; /* NumĂ©ro d’inƓud */
__u64 stx_size; /* Taille totale en octets */
__u64 stx_blocks; /* Nombre de blocs de 512 o alloués */
__u64 stx_attributes_mask;
/* Masque pour montrer ce qui est pris en charge
dans stx_attributes */
/* Les champs suivants sont des fichiers d’horodatage */
struct statx_timestamp stx_atime; /* Dernier accĂšs */
struct statx_timestamp stx_btime; /* Création */
struct statx_timestamp stx_ctime; /* Dernier changement d’état */
struct statx_timestamp stx_mtime; /* DerniĂšre modification */
/* Si ce fichier représente un périphérique, alors les
deux champs suivants contiennent l’identifiant du pĂ©riphĂ©rique */
__u32 stx_rdev_major; /* Identifiant majeur */
__u32 stx_rdev_minor; /* Identifiant mineur */
/* Les deux champs suivants contiennent l’identifiant du pĂ©riphĂ©rique
contenant le systĂšme de fichier oĂč est situĂ© le fichier */
__u32 stx_dev_major ; /* ID majeur */
__u32 stx_dev_minor ; /* ID mineur */
__u64 stx_mnt_id; /* ID de montage */
/* Restrictions d’alignement d’E/S directes */
__u32 stx_dio_mem_align;
__u32 stx_dio_offset_align;
};

Les horodatages de fichier sont des structures du type suivant :

struct statx_timestamp {
__s64 tv_sec; /* Secondes depuis l’Epoch (temps UNIX) */
__u32 tv_nsec; /* Nanosecondes depuis tv_sec */
};

(Notez que l’espace rĂ©servĂ© et le remplissage sont ommis.)

Invoking statx():

Pour accĂ©der Ă  l’état d’un fichier, aucune autorisation n’est requise sur le fichier lui-mĂȘme, mais dans le cas de statx () avec un nom de chemin, la permission d’exĂ©cution (recherche) est requise sur tous les rĂ©pertoires du nom_chemin qui mĂšnent au fichier.

statx () utilise nom_chemin , dirfd , et flags pour identifier le fichier cible d’une des façons suivantes :
Un nom de chemin absolu

Si nom_chemin commence avec une barre oblique (slash), alors c’est un nom de chemin absolu qui identifie le fichier cible. Dans ce cas, dirfd est ignorĂ©.

Nom de chemin relatif

Si nom_chemin est une chaĂźne qui commence par un caractĂšre autre qu’une barre oblique et que dirfd est AT_FDCWD , alors nom_chemin est un chemin relatif qui est interprĂ©tĂ© comme Ă©tant relatif au rĂ©pertoire courant du processus appelant.

Un répertoire de nom de chemin relatif

Si nom_chemin est une chaĂźne qui commence par un caractĂšre autre qu’une barre oblique et dirfd est un descripteur de fichier qui rĂ©fĂšre Ă  un rĂ©pertoire, alors nom_chemin est un nom de chemin relatif qui est interprĂ©tĂ© relativement au rĂ©pertoire auquel fait rĂ©fĂ©rence dirfd . (Consulter openat (2) pour une explication de son utilitĂ©.)

Avec un descripteur de fichier

Si nom_chemin est une chaßne vide et que le drapeau AT_EMPTY_PATH est spécifié dans flags (voir ci-dessous), alors le fichier cible est celui auquel fait référence le descripteur de fichier dirfd .

flags peut ĂȘtre utilisĂ© pour influencer une recherche par nom de chemin. Une valeur pour flags est construite par une association OU binaire de zĂ©ro ou plus des constantes suivantes :
AT_EMPTY_PATH

Si nom_chemin est une chaßne vide, opérer sur le fichier référencé par dirfd (qui peut avoir été obtenu en utilisant le drapeau O_PATH de open (2)). Dans ce cas, dirfd peut faire référence à tout type de fichier, et pas seulement à un répertoire.

Si dirfd est AT_FDCWD , l’appel opĂšre sur le rĂ©pertoire de travail actuel.

AT_NO_AUTOMOUNT

Ne pas attacher automatiquement le composant terminal (nom de base) de nom_chemin s’il s’agit d’un rĂ©pertoire qui est un point de montage automatique. Cela permet Ă  l’appelant de rassembler les attributs d’un point de montage automatique (plutĂŽt que l’emplacement qu’il attacherait). Ce drapeau n’a aucun effet si le point de montage est dĂ©jĂ  attachĂ©.

Le drapeau AT_NO_AUTOMOUNT peut ĂȘtre utilisĂ© dans des outils qui analysent les rĂ©pertoires pour Ă©viter un montage automatique en masse d’un rĂ©pertoire contenant des points de montage automatique.

stat (2), lstat (2) et fstatat (2) agissent tous comme si AT_NO_AUTOMOUNT a été défini.

AT_SYMLINK_NOFOLLOW

Si nom_chemin est un lien symbolique, ne pas le dĂ©rĂ©fĂ©rencer, mais renvoyer des informations sur le lien lui-mĂȘme, comme le fait lstat (2).

flags peut aussi ĂȘtre utilisĂ© pour contrĂŽler quelle sorte de synchronisation le noyau effectuera lors d’une demande d’un fichier sur un systĂšme de fichiers distant. Cela est fait par l’utilisation d’un OU binaire d’une des valeurs suivantes :
AT_STATX_SYNC_AS_STAT

Faire tout ce que fait stat (2). C’est l’option par dĂ©faut et c’est trĂšs spĂ©cifique au systĂšme de fichiers.

AT_STATX_FORCE_SYNC

Forcer les attributs Ă  ĂȘtre synchronisĂ©s avec le serveur. Cela peut nĂ©cessiter qu’un systĂšme de fichiers en rĂ©seau rĂ©alise une réécriture de donnĂ©es pour avoir des horodatages corrects.

AT_STATX_DONT_SYNC

Ne rien synchroniser, mais prendre plutĂŽt ce que le systĂšme a mis en cache si possible. Cela peut signifier que les informations renvoyĂ©es sont approximatives, mais, sur un systĂšme de fichiers en rĂ©seau, cela peut ne pas impliquer d’aller-retour vers le serveur, mĂȘme si aucun bail n’est dĂ©tenu.

L’argument mask Ă  statx () est utilisĂ© pour dire au noyau quels champs intĂ©ressent l’appelant. mask est une combinaison liĂ©e par un OU binaire des constantes suivantes :

Image grohtml-3857759-1.png

Remarquez que, en gĂ©nĂ©ral, le noyau ne rejette pas des valeurs dans mask autres que celles ci-dessus. (Pour une exception, voir EINVAL dans les erreurs.) Au lieu de cela, il informe simplement l’appelant des valeurs prises en charge par ce noyau et ce systĂšme de fichiers Ă  l’aide du champ statx.stx_mask . Par consĂ©quent, ne pas se contenter de mettre mask Ă  UINT_MAX (tous les bits sont mis), car un ou plusieurs bits peuvent, Ă  l’avenir, ĂȘtre utilisĂ©s pour spĂ©cifier une extension au tampon.

Information renvoyée

L’information d’état pour le fichier cible est renvoyĂ©e dans la structure statx pointĂ©e par statxbuf . On y trouve stx_mask qui indique quelles autres informations ont Ă©tĂ© renvoyĂ©es. stx_mask a le mĂȘme format que l’argument mask et les bits y sont dĂ©finis pour indiquer quels champs ont Ă©tĂ© remplis.

Il convient de noter que le noyau peut renvoyer des champs qui n’ont pas Ă©tĂ© demandĂ©s et peut ne pas renvoyer des champs qui ont Ă©tĂ© demandĂ©s, en fonction de ce que le systĂšme de fichiers sous-jacent prend en charge. (Les champs qui reçoivent des valeurs alors qu’ils ne sont pas demandĂ©s peuvent ĂȘtre simplement ignorĂ©s.) Dans les deux cas, stx_mask ne sera pas Ă©gal Ă  mask .

Si un systĂšme de fichiers ne prend pas en charge un champ ou qu’il y a une valeur non reprĂ©sentable (par exemple, un fichier d’un type exotique), alors le bit masquĂ© correspondant Ă  ce champ sera effacĂ© de stx_mask mĂȘme si l’utilisateur l’a demandĂ© et une valeur fictive sera remplie Ă  des fins de compatibilitĂ© s’il en existe une (par exemple un UID ou un GID fictifs pourront ĂȘtre indiquĂ©s pour monter sous certaines circonstances).

Un systĂšme de fichiers peut Ă©galement remplir des champs que l’appelant n’a pas demandĂ© s’il dispose de valeurs pour ces champs et si l’information est disponible sans coĂ»t supplĂ©mentaire. Si cela se produit, les bits correspondants seront mis dans stx_mask .

Note : pour la performance et des raisons de simplicitĂ©, des champs diffĂ©rents dans la structure statx devraient contenir les informations d’état des divers moments de l’exĂ©cution de l’appel systĂšme. Par exemple, si stx_mode ou stx_uid est changĂ© par un autre processus par un appel chmod (2) ou chown (2), stat () devrait renvoyer l’ancien stx_mode avec le nouveau stx_uid , ou l’ancien stx_uid avec le nouveau stx_mode .

À part ceux du stx_mask (qui est dĂ©crit ci-dessus), les champs de la structure statx sont :
stx_blksize

La taille de bloc « préférée » pour des entrées-sorties du systÚme de fichiers efficaces. (Des écritures par blocs plus petits peuvent entraßner un cycle lecture/modification/réécriture inefficace.)

stx_attributes

Informations supplĂ©mentaires sur l’état du fichier (voir ci-dessous pour plus d’informations).

stx_nlink

Le nombre de liens directs sur un fichier.

stx_uid

Ce champ contient l’UID du propriĂ©taire du fichier.

stx_gid

Ce champ contient l’identifiant du groupe propriĂ©taire du fichier.

stx_mode

Le mode et type de fichier. Voir inode (7) pour plus de détails.

stx_ino

Le numĂ©ro d’inƓud du fichier.

stx_size

La taille du fichier (s’il s’agit d’un fichier ordinaire ou d’un lien symbolique) en octets. La taille d’un lien symbolique est la longueur du chemin d’accùs qu’il vise, sans octet NULL final.

stx_blocks

Le nombre de blocs de 512 octets allouĂ©s au fichier sur le support. (Cette valeur peut ĂȘtre infĂ©rieure Ă  st_size /512 si le fichier a des trous.)

stx_attributes_mask

Un masque indiquant quels bits dans stx_attributes sont pris en charge par le VFS et le systĂšme de fichiers.

stx_atime

L’horodatage du dernier accùs au fichier.

stx_btime

L’horodatage de crĂ©ation du fichier.

stx_ctime

L’horodatage du dernier changement d’état du fichier.

stx_mtime

L’horodatage de la derniùre modification du fichier.

stx_dev_major et stx_dev_minor

Le pĂ©riphĂ©rique sur lequel rĂ©side ce fichier (inƓud).

stx_rdev_major et stx_rdev_minor

Le pĂ©riphĂ©rique que ce fichier (inƓud) reprĂ©sente si le fichier est de type pĂ©riphĂ©rique bloc ou caractĂšre.

stx_mnt_id

L’identifiant du montage contenant le fichier. C’est le mĂȘme numĂ©ro que celui rapportĂ© par name_to_handle_at (2) et qui correspond au numĂ©ro dans le premier champ d’un des enregistrements dans /proc/self/mountinfo .

stx_dio_mem_align

L’alignement (en octets) est requis pour les tampons de mĂ©moire utilisateur pour des E/S directes ( O_DIRECT ) sur ce fichier, ou 0 si les E/S directes ne sont pas prises en charge sur ce fichier.

STATX_DIOALIGN ( stx_dio_mem_align et stx_dio_offset_align ) est pris en charge sur les périphériques bloc depuis Linux 6.1. La prise en charge des fichiers ordinaires varie selon le systÚme de fichiers ; il est pris en charge par ext4, f2fs et xfs depuis Linux 6.1.

stx_dio_offset_align

L’alignement (en octets) est requis pour les dĂ©calage sdes fichiers et la longueur des segments d’E/S pour des E/S directes ( O_DIRECT ) sur ce fichier, ou 0 si les E/S directes ne sont pas prises en charge sur ce fichier. Il sera uniquement diffĂ©rent de zĂ©ro si stx_dio_mem_align est diffĂ©rent de zĂ©ro et vice-versa.

Pour plus d’information sur les champs ci-dessus, voir inode (7).

Attributs de fichier

Le champ stx_attributes contient un ensemble de drapeaux liĂ©s par un OU binaire qui indiquent les attributs additionnels du fichier. Veuillez noter que tout attribut qui n’est pas indiquĂ© comme pris en charge par stx_attributes_mask n’a pas de valeur utilisable ici. Les bits dans stx_attributes_mask correspondent bit par bit Ă  stx_attributes .

Les drapeaux sont de la forme suivante :
STATX_ATTR_COMPRESSED

Le fichier est compressé par le systÚme de fichiers et son accÚs peut nécessiter des ressources supplémentaires.

STATX_ATTR_IMMUTABLE

Le fichier ne peut pas ĂȘtre modifié : il ne peut ĂȘtre ni effacĂ©, ni renommĂ©, aucun lien direct ne peut ĂȘtre créé vers ce fichier et aucune donnĂ©e ne peut y ĂȘtre Ă©crite. Consulter chattr (1).

STATX_ATTR_APPEND

Le fichier ne peut ĂȘtre ouvert qu’en mode ajout pour l’écriture. L’écriture par accĂšs alĂ©atoire n’est pas permise. Voir chattr (1).

STATX_ATTR_NODUMP

Le fichier n’est pas candidat Ă  une sauvegarde lorsqu’un programme de sauvegarde tel que dump (8) est lancĂ©. Voir chattr (1).

STATX_ATTR_ENCRYPTED

Une clé est requise pour que le fichier soit chiffré par le systÚme de fichiers.

STATX_ATTR_VERITY (depuis Linux 5.5)

Le fichier a fs-verity d’activĂ©. Il est impossible d’y Ă©crire et toutes les lectures seront vĂ©rifiĂ©es par rapport Ă  un hachage cryptographique qui couvre l’ensemble du fichier (par exemple, grĂące Ă  un arbre de Merkel).

STATX_ATTR_DAX (depuis Linux 5.8)

Le fichier est dans l’état DAX (accĂšs direct au processeur). L’état DAX essaie de minimiser les effets du cache du logiciel Ă  la fois pour les mappages de mĂ©moire et les EntrĂ©es/Sorties de ce fichier. Cela nĂ©cessite un systĂšme de fichiers qui a Ă©tĂ© configurĂ© pour prendre en charge DAX.

DAX suppose gĂ©nĂ©ralement que tous les accĂšs se font Ă  travers des instructions de chargement/stockage du processeur, ce qui peut minimiser la surcharge pour les petits accĂšs, mais peut avoir un effet nĂ©gatif sur l’utilisation du processeur pour les transferts importants.

Le fichier d’E/S est fait directement vers/depuis les tampons de l’espace utilisateur et les E/S mappĂ©es en mĂ©moire peuvent ĂȘtre effectuĂ©es avec des mappages directs en mĂ©moire qui contournent le cache de page du noyau.

Alors que la propriĂ©tĂ© DAX a tendance Ă  entraĂźner un transfert synchrone des donnĂ©es, cela ne procure pas les mĂȘmes garanties que le drapeau O_SYNC (voir open (2)), oĂč les donnĂ©es et les mĂ©tadonnĂ©es sont transfĂ©rĂ©es ensemble.

Un fichier DAX devrait accepter d’ĂȘtre mappĂ© avec le drapeau MAP_SYNC , ce qui permet Ă  un programme d’utiliser les instructions de vidage du cache du processeur pour faire persister les opĂ©rations de stockage du processeur sans un fsync (2) explicite. Voir mmap (2) pour plus d’informations.

STATX_ATTR_MOUNT_ROOT (depuis Linux 5.8)

Ce fichier est la racine d’un montage’

VALEUR RENVOYÉE

En cas de succĂšs, zĂ©ro est renvoyĂ©. En cas d’erreur, -1 est renvoyĂ© et errno est dĂ©finie pour prĂ©ciser l’erreur.

ERREURS

EACCES

La permission de parcours est refusée pour un des répertoires contenu dans le chemin nom_chemin . (Consultez aussi path_resolution (7).)

EBADF

pathname est relatif mais dirfd n’est ni AT_FDWCD ni un descripteur de fichier valable.

EFAULT

nom_chemin ou statxbuf est NULL ou pointe en dehors de l’espace d’adressage accessible.

EINVAL

flags contient un attribut non valable.

EINVAL

Drapeau réservé indiqué dans mask . (Actuellement, il y a un tel drapeau, désigné par la constante STATX_RESERVED , avec la valeur 0x80000000U.)

ELOOP

Trop de liens symboliques rencontrés dans le nom de chemin.

ENAMETOOLONG

nom_chemin est trop long.

ENOENT

Un composant du chemin nom_chemin n’existe pas, ou nom_chemin est une chaĂźne vide et AT_EMPTY_PATH n’était pas spĂ©cifiĂ© dans flags .

ENOMEM

Pas assez de mémoire (mémoire noyau).

ENOTDIR

Un composant du prĂ©fixe du chemin nom_chemin n’est pas un rĂ©pertoire ou nom_chemin est relatif, et le descripteur de fichier dirfd est associĂ© Ă  un fichier, pas Ă  un rĂ©pertoire.

STANDARDS

Linux.

HISTORIQUE

Linux 4.11, glibc 2.28.

VOIR AUSSI

ls (1), stat (1), access (2), chmod (2), chown (2), name_to_handle_at (2), readlink (2), stat (2), utime (2), proc (5), capabilities (7), inode (7), symlink (7)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et bubu <bubub@no-log.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .