Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Actualités]
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des perfor...
[Actualités]
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
[Actualités]
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 ser...
[Actualités]
Windows 10 version 22H2 : erreur de mise à jour et de désinstallation
[Actualités]
OpenAI prépare désormais son propre navigateur
[Actualités]
WhatsApp bat Telegram : les transcriptions des messages vocaux arrivent pour tou...
[Actualités]
Unreal et Unreal Tournament désormais gratuits sur Internet Archive
[Actualités]
Windows 10 : Microsoft affiche des publicités en plein écran pour les PC équi...
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] stat, fstat, lstat - Obtenir le statut d'un fichier (file status). [size=18] [b]Résumé[/b] [/size] [b]#include
[/b] [b][/b] [b]#include
[/b] [b][/b] [b]#include
[/b] [b][i]int stat(const char * file_name , struct stat * buf );[/i][/b] [b][/b] [b][i]int fstat(int filedes , struct stat * buf );[/i][/b] [b][/b] [b][i]int lstat(const char * file_name , struct stat * buf );[/i][/b] [size=18] [b]Description[/b] [/size] Ces fonctions renvoient des informations à propos du fichier indiqué. Vous n'avez besoin d'aucun droit d'accès au fichier pour obtenir les informations, mais vous devez avoir le droit de parcours de tous les répertoires mentionnés dans le chemin menant au fichier. [b]stat[/b] récupère le statut du fichier pointé par [i]file_name[/i] et remplit le buffer [b]buf .[/b] [b]lstat[/b] est identique à [b]stat ,[/b] sauf que dans le cas d'un lien symbolique, il donne l'état du lien lui-même plutôt que celui du fichier visé. [b]fstat[/b] est identique à [b]stat ,[/b] sauf que le fichier ouvert est pointé par le descripteur [b]filedes ,[/b] obtenu avec [b]open(2) .[/b] Les trois fonctions retournent une structure [i]stat[/i] contenant les champs suivants : [table][row][col] [/col][col] .nf struct stat { dev_t st_dev; /* Périphérique */ ino_t st_ino; /* Numéro i-noeud */ mode_t st_mode; /* Protection */ nlink_t st_nlink; /* Nb liens matériels */ uid_t st_uid; /* UID propriétaire */ gid_t st_gid; /* GID propriétaire */ dev_t st_rdev; /* Type périphérique */ off_t st_size; /* Taille totale en octets */ blksize_t st_blksize; /* Taille de bloc pour E/S */ blkcnt_t st_blocks; /* Nombre de blocs alloués */ time_t st_atime; /* Heure dernier accès */ time_t st_mtime; /* Heure dernière modification */ time_t st_ctime; /* Heure dernier changement */ }; .fi[/col][/row][/table] Le champ [i]st_size[/i] indique la taille du fichier (s'il s'agit d'un fichier régulier ou d'un lien symbolique) en octets. La taille d'un lien symbolique est la longueur de la chaîne représentant le chemin d'accès qu'il vise, sans le caractère NUL final. La valeur [i]st_blocks[/i] donne la taille du fichier en blocs de 512 octets. (Cette valeur peut être plus petite que [b]st_size /512[/b] par exemple si le fichier contient des trous). La valeur [i]st_blksize[/i] indique la taille de bloc "préférée" pour les entrées/sorties du système (l'écriture dans un fichier par petits morceaux peut induire de nombreuses étapes lecture-modification-écriture peu efficaces). Les systèmes de fichiers de Linux n'implémentent pas tous les champs "time". Certains systèmes de fichiers autorise le montage de telle manière que les accès ne modifient pas le champ [i]st_atime[/i] (voir l'option `noatime' de [b]mount (8)).[/b] Le champ [i]st_atime[/i] est modifié par les accès au fichier, c'est à dire avec [b]exec (2),[/b] [b]mknod (2),[/b] [b]pipe (2),[/b] [b]utime (2)[/b] et [b]read (2)[/b] (d'au moins un octet). D'autres routines, comme [b]mmap (2),[/b] peuvent ou non mettre à jour ce champ [b]st_atime .[/b] Le champ [i]st_mtime[/i] est modifié par des changements sur le fichier lui-même, c'est à dire [b]mknod (2),[/b] [b]truncate (2),[/b] [b]utime (2)[/b] et [b]write (2)[/b] (d'au moins un octet). D'autre part le champ [i]st_mtime[/i] d'un répertoire est modifié lors de la création ou la suppression de fichiers en son sein. Le champ [i]st_mtime[/i] n'est généralement [i]pas[/i] mis à jour lors de modification de propriétaire, groupe, mode ou nombre de liens physiques. Le champ [i]st_ctime[/i] est modifié lors d'une écriture, une lecture, ou une modification de données concernant l'i-noeud (propriétaire, groupe, mode, etc...) Les macros POSIX suivantes sont fournies pour vérifier le type de fichier :[table][row][col] [/col][col] [table][row][col] [/col][col]S_ISREG(m) un fichier régulier ?[/col][/row][/table] [table][row][col] [/col][col]S_ISDIR(m) un répertoire ?[/col][/row][/table] [table][row][col] [/col][col]S_ISCHR(m) un péripherique en mode caractère ?[/col][/row][/table] [table][row][col] [/col][col]S_ISBLK(m) un périphérique en mode bloc ?[/col][/row][/table] [table][row][col] [/col][col]S_ISFIFO(m) une FIFO ?[/col][/row][/table] [table][row][col] [/col][col]S_ISLNK(m) est-ce un lien symbolique ? (Pas dans POSIX.1-1996).[/col][/row][/table] [table][row][col] [/col][col]S_ISSOCK(m) une socket ? (Pas dans POSIX.1-1996).[/col][/row][/table][/col][/row][/table] Les attributs suivants correspondent au champ [b]st_mode :[/b] .TS l l l. S_IFMT 00170000 masque du type de fichier S_IFSOCK 0140000 socket S_IFLNK 0120000 lien symbolique S_IFREG 0100000 fichier régulier S_IFBLK 0060000 périphérique blocs S_IFDIR 0040000 répertoire S_IFCHR 0020000 périphérique caractères S_IFIFO 0010000 fifo S_ISUID 0004000 bit Set-UID S_ISGID 0002000 bit Set-Gid S_ISVTX 0001000 bit "sticky" S_IRWXU 00700 lecture/écriture/exécution du propriétaire S_IRUSR 00400 le propriétaire a le droit de lecture S_IWUSR 00200 le propriétaire a le droit d'écriture S_IXUSR 00100 le propriétaire a le droit d'exécution S_IRWXG 00070 lecture/écriture/exécution du groupe S_IRGRP 00040 le groupe a le droit de lecture S_IWGRP 00020 le groupe a le droit d'écriture S_IXGRP 00010 le groupe a le droit d'exécution S_IRWXO 00007 lecture/écriture/exécution des autres S_IROTH 00004 les autres ont le droit de lecture S_IWOTH 00002 les autres ont le droit d'écriture S_IXOTH 00001 les autres ont le droit d'exécution .TE Le bit Set-GID (S_ISGID) a plusieurs utilisations particulières : pour un répertoire, il indique que la sémantique BSD doit être appliquée en son sein, c'est à dire que les fichiers qui y sont créés héritent leur GID du répertoire et non pas du GID effectif du processus créateur, et les sous-répertoire auront automatiquement le bit S_ISGID actif. Pour les fichiers qui n'ont pas d'autorisation d'exécution pour le groupe (S_IXGRP non actif), ce bit indique qu'un verrouillage strict est en vigueur sur ce fichier. Le bit `sticky' (S_ISVTX) sur un répertoire indique que les fichiers qui s'y trouvent ne peuvent être renommés ou effacés que par leur propriétaire, par le propriétaire du répertoire ou par root. [size=18] [b]Valeur renvoyée[/b] [/size] Ces fonctions retournent zéro si elles réussissent. En cas d'echec -1 est renvoyé, et [i]errno[/i] contient le code d'erreur. [size=18] [b]Erreurs[/b] [/size] [b]EBADF[/b] [i]filedes[/i] [table][row][col] [/col][col]est un mauvais descripteur.[/col][/row][/table] [b]ENOENT[/b] [table][row][col] [/col][col]Un composant de [i]file_name[/i] n'existe pas, ou il s'agit d'une chaine vide.[/col][/row][/table] [b]ENOTDIR[/b] [table][row][col] [/col][col]Un composant du chemin d'accès n'est pas un répertoire.[/col][/row][/table] [b]ELOOP[/b] [table][row][col] [/col][col]Trop de liens symboliques rencontrés dans le chemin d'accès.[/col][/row][/table] [b]EFAULT[/b] [table][row][col] [/col][col]Un pointeur se trouve en dehors de l'espace d'adressage.[/col][/row][/table] [b]EACCES[/b] [table][row][col] [/col][col]Autorisation refusée.[/col][/row][/table] [b]ENOMEM[/b] [table][row][col] [/col][col]Pas assez de mémoire pour le noyau.[/col][/row][/table] [b]ENAMETOOLONG[/b] [table][row][col] [/col][col]Nom de fichier trop long[/col][/row][/table] [size=18] [b]Conformité[/b] [/size] Les appels [b]stat[/b] et [b]fstat[/b] sont conformes aux versions SVr4, POSIX, X/OPEN, BSD 4.3. L'appel [b]lstat[/b] est conforme aux versions BSD 4.3 et SVr4. SVr4 mentionne des conditions d'erreurs supplémentaires pour [b]fstat[/b] EINTR, ENOLINK, et EOVERFLOW. Pour [b]stat[/b] et [b]lstat[/b] SVr4 indique les conditions supplémentaires EACCES, EINTR, EMULTIHOP, ENOLINK, et EOVERLOW. L'utilisation des champs [i]st_blocks[/i] et [i]st_blksize[/i] risque d'être moins portable. Ils ont été introduit dans BSD, et ne sont pas mentionnée dans POSIX. Leur interprétation change suivant les systèmes, voire sur un même système s'il y a des montages NFS. Posix ne décrit pas les bits S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO, S_ISVTX, mais réclame d'utiliser les macros S_ISDIR(), etc. Les macros S_ISLKNK et S_ISSOCK ne se trouvent pas dans POSI.1-1996 mais seront présentes dans le prochain standard POSIX. La première vient de SVID 4v2, la seconde de SUSv2. Unix V7 (et les systèmes suivants) propose S_IREAD, S_IWRITE, S_IEXEC, là où POSIX préfère leurs synonymes S_IRUSR, S_IWUSR, S_IXUSR. [size=18] [b]Autres systÈmes[/b] [/size] Voici quelques valeurs qui ont été (ou sont) utilisées sur d'autres systèmes .TS l l l l l. hex nom ls octal description f000 S_IFMT 170000 Masque du type de fichier 0000 000000 SCO out-of-service inode, BSD unknown type SVID-v2 and XPG2 have both 0 and 0100000 for ordinary file 1000 S_IFIFO p| 010000 fifo (tube nommé) 2000 S_IFCHR c 020000 fichier spécial caractère (V7) 3000 S_IFMPC 030000 fichier spécial caractère multiplexé (V7) 4000 S_IFDIR d/ 040000 répertoire (V7) 5000 S_IFNAM 050000 fichier spécial nommé XENIX avec deux sous-types distingués par st_rdev valant 1 ou 2: 0001 S_INSEM s 000001 sous-type sémaphore de IFNAM XENIX 0002 S_INSHD m 000002 sous-type données partagées de IFNAM XENIX 6000 S_IFBLK b 060000 fichier spécial bloc (V7) 7000 S_IFMPB 070000 fichier spécial bloc multiplexé (V7) 8000 S_IFREG - 100000 fichier normal (V7) 9000 S_IFCMP 110000 compressé VxFS 9000 S_IFNWK n 110000 fichier spécial réseau (HP-UX) a000 S_IFLNK l@ 120000 lien symbolique (BSD) b000 S_IFSHAD 130000 Fichier shadow Solaris pour l'ACL (invisible) c000 S_IFSOCK s= 140000 socket (BSD; aussi "S_IFSOC" sur VxFS) d000 S_IFDOOR D> 150000 Solaris door e000 S_IFWHT w% 160000 BSD whiteout (non utilisé pour les inoeuds) 0200 S_ISVTX 001000 `sticky bit': garder en mémoire après exécution (V7) réservé (SVID-v2) non-répertoires : ne pas swapper le fichier (SunOS) répertoires : restrictions d'effacement (SVID-v4.2) 0400 S_ISGID 002000 Utiliser l'ID du groupe à l'exécution (V7) répertoires : sémantique BSD propageant le GID 0400 S_ENFMT 002000 Verrouillage strict Système V (partage S_ISGID) 0800 S_ISUID 004000 Utiliser l'ID utilisateur à l'exécution (V7) 0800 S_CD 004000 Fichier répertoire dépendant du contexte (HP-UX) .TE Une commande sticky est apparue dans la version 32V d'AT&T UNIX. [size=18] [b]Voir aussi[/b] [/size] [b]chmod (2),[/b] [b]chown (2),[/b] [b]readlink (2),[/b] [b]utime (2)[/b] [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 1996-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Matériel
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
Les Technos
Les Technos #469 : Un jour sans fin
Jeux Vidéos
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des performances à revoir
Matériel
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
Tablettes
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 serait abandonnée
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?