Les MANs Linux en français...
STATFS
Section: Manuel du programmeur Linux (2)Updated: 6 juin 2001
Index Retour au Menu Principal
NOM
statfs, fstatfs - Obtenir des statistiques sur le système de fichiers.SYNOPSIS
#include <sys/vfs.h>
int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);
DESCRIPTION
statfs renvoie des informations à propos d'un système de fichiers montés. path est le nom d'un fichier quelconque dans le système de fichiers. buf est un pointeur sur une structure statfs définie comme suit :
-
struct statfs { long f_type; /* type de système de fichier */ long f_bsize; /* Taille optimale de bloc */ long f_blocks; /* Nombre total de blocs */ long f_bfree; /* Blocs libres */ long f_bavail; /* Blocs libres pour utilisateurs */ long f_files; /* Nombres de noeuds */ long f_ffree; /* Nombre de noeuds libres */ fsid_t f_fsid; /* ID du système de fichiers */ long f_namelen; /* Longueur maxi des noms de fichier */ long f_spare[6]; /* réservé pour usage ultérieur */ }; Types de systèmes de fichiers : linux/affs_fs.h: AFFS_SUPER_MAGIC 0xADFF linux/efs_fs.h: EFS_SUPER_MAGIC 0x00414A53 linux/ext_fs.h: EXT_SUPER_MAGIC 0x137D linux/ext2_fs.h: EXT2_OLD_SUPER_MAGIC 0xEF51 EXT2_SUPER_MAGIC 0xEF53 linux/hpfs_fs.h: HPFS_SUPER_MAGIC 0xF995E849 linux/iso_fs.h: ISOFS_SUPER_MAGIC 0x9660 linux/minix_fs.h: MINIX_SUPER_MAGIC 0x137F /* Minix original */ MINIX_SUPER_MAGIC2 0x138F /* Minix 30 caract. */ MINIX2_SUPER_MAGIC 0x2468 /* Minix V2 */ MINIX2_SUPER_MAGIC2 0x2478 /* Minix V2 30 car. */ linux/msdos_fs.h: MSDOS_SUPER_MAGIC 0x4d44 linux/ncp_fs.h: NCP_SUPER_MAGIC 0x564c linux/nfs_fs.h: NFS_SUPER_MAGIC 0x6969 linux/proc_fs.h: PROC_SUPER_MAGIC 0x9fa0 linux/smb_fs.h: SMB_SUPER_MAGIC 0x517B linux/sysv_fs.h: XENIX_SUPER_MAGIC 0x012FF7B4 SYSV4_SUPER_MAGIC 0x012FF7B5 SYSV2_SUPER_MAGIC 0x012FF7B6 COH_SUPER_MAGIC 0x012FF7B7 linux/ufs_fs.h: UFS_MAGIC 0x00011954 linux/xfs_fs.h: XFS_SUPER_MAGIC 0x58465342 linux/xia_fs.h: _XIAFS_SUPER_MAGIC 0x012FD16D
Les champs indéfinis pour un système de fichiers donné sont mis à 0. fstatfs renvoie les mêmes informations concernant un fichier ouvert référencé par le descripteur fd.
VALEUR RENVOYÉE
statfs et fstatfs renvoient zéro s'ils réussissent. En cas d'échec -1 est renvoyé, et errno contient le code d'erreur.ERREURS
Pour statfs:- ENOTDIR
- Un élément du chemin d'accès path n'est pas un répertoire
- ENAMETOOLONG
- path est trop long.
- ENOENT
- Le fichier indiqué par path n'existe pas.
- EACCES
- Un élément du chemin d'accès path ne permet pas le parcours.
- ELOOP
- path contient une référence circulaire (à travers un lien symbolique).
- EFAULT
- Buf ou path pointent en dehors de l'espace d'adressage accessible
- EIO
- Une erreur d'entrée/sortie s'est produite pendant la lecture dans le système de fichiers.
- ENOMEM
- Pas assez de mémoire pour le noyau.
- ENOSYS
- Le système de fichiers contenant path ne supporte pas l'appel statfs.
Pour fstatfs:
- EBADF
- Fd n'est pas un descripteur de fichier ouvert valide.
- EFAULT
- Buf pointe en dehors de l'espace d'adressage accessible
- EIO
- Une erreur d'entrée/sortie s'est produite pendant la lecture dans le système de fichiers. ENOSYS Le système de fichiers contenant fd ne supporte pas l'appel statfs.
EXEMPLE
#include <stdio.h> #include <stdlib.h> #include <sys/vfs.h> /* Les en-têtes ci dessous définissent les constantes * symboliques pour les nombres magiques des systèmes * de fichiers */ #include <linux/affs_fs.h> #include <linux/ext_fs.h> #include <linux/ext2_fs.h> #include <linux/hpfs_fs.h> #include <linux/iso_fs.h> #include <linux/minix_fs.h> #include <linux/msdos_fs.h> #include <linux/ncp_fs.h> #include <linux/nfs_fs.h> #include <linux/proc_fs.h> #include <linux/smb_fs.h> #include <linux/sysv_fs.h> #include <linux/ufs_fs.h> #include <linux/xia_fs.h> int main (int nb_args, char * args []) { struct statfs sts; char nom_systeme_fichier [10]; if (nb_args != 2) { fprintf (stderr, "syntaxe : %s <fichier>\n ", args [0]); exit (1); } if (statfs (args [1], & sts) != 0) { fprintf (stderr, "%s : erreur %X\n ", args [0], errno); exit (1); } switch (sts . f_type) { case AFFS_SUPER_MAGIC : strcpy (nom_systeme_fichier, "AFFS"); break; case EXT2_SUPER_MAGIC : case EXT2_OLD_SUPER_MAGIC : strcpy (nom_systeme_fichier, "EXT 2"); break; case EXT_SUPER_MAGIC : strcpy (nom_systeme_fichier, "EXT"); break; case HPFS_SUPER_MAGIC : strcpy (nom_systeme_fichier, "HP"); break; case ISOFS_SUPER_MAGIC : strcpy (nom_systeme_fichier, "ISO"); break; case MINIX_SUPER_MAGIC : case MINIX_SUPER_MAGIC2 : case MINIX2_SUPER_MAGIC : case MINIX2_SUPER_MAGIC2 : strcpy (nom_systeme_fichier, "MINIX"); break; case MSDOS_SUPER_MAGIC : strcpy (nom_systeme_fichier, "MS-DOS"); break; case NCP_SUPER_MAGIC : strcpy (nom_systeme_fichier, "NCP"); break; case NFS_SUPER_MAGIC : strcpy (nom_systeme_fichier, "NFS"); break; case PROC_SUPER_MAGIC : strcpy (nom_systeme_fichier, "PROC"); break; case SMB_SUPER_MAGIC : strcpy (nom_systeme_fichier, "SMB"); break; case XENIX_SUPER_MAGIC : case SYSV4_SUPER_MAGIC : case SYSV2_SUPER_MAGIC : case COH_SUPER_MAGIC : strcpy (nom_systeme_fichier, "SysV"); break; case UFS_MAGIC : strcpy (nom_systeme_fichier, "UFS"); break; case _XIAFS_SUPER_MAGIC : strcpy (nom_systeme_fichier, "XIA"); break; default : strcpy (nom_systeme_fichier, "???"); } fprintf (stdout, "Système de fichiers : %s\n", nom_systeme_fichier); fprintf (stdout, "Taille optimale de blocs : %ld\n", sts . f_bsize); fprintf (stdout, "Taille totale : %ld blocs\n", sts . f_blocks); fprintf (stdout, "Espace libre : %ld blocs\n", sts . f_bfree); fprintf (stdout, "Espace utilisateurs : %ld blocs\n", sts . f_bavail); fprintf (stdout, "Nombre de noeuds : %ld\n", sts . f_files); fprintf (stdout, "Nombre de noeuds libres : %ld\n", sts . f_ffree); fprintf (stdout, "ID du système de fichiers : %X\n", sts . f_fsid); fprintf (stdout, "Longueur maxi noms fichiers : %ld\n", sts . f_namelen); }
CONFORMITÉ
La routine statfs de Linux a été inspirée par celle de BSD 4.4, mais n'emploie pas la même structure.VOIR AUSSI
stat(2)TRADUCTION
Christophe Blaess, 1997.
Index
Time: 21:45:21 GMT, December 19, 2004