Linux | 
				CentOS 4.8 | 
				|
![]()  | 
				fstatfs(2) | 
				![]()  | 
			
| 
 statfs, fstatfs − Obtenir des statistiques sur le système de fichiers.  | 
| 
 #include <sys/vfs.h> int statfs(const char *path, struct
statfs *buf);  | 
| 
 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.  | 
| 
 statfs et fstatfs renvoient zéro s’ils réussissent. En cas d’échec −1 est renvoyé, et errno contient le code d’erreur.  | 
| 
 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.  | 
| 
 #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  | 
| 
 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);  | 
| 
 }  | 
| 
 La routine statfs de Linux a été inspirée par celle de BSD 4.4, mais n’emploie pas la même structure.  | 
| 
 stat(2)  | 
| 
 Christophe Blaess, 1997.  | 
![]()  | 
				fstatfs(2) | ![]()  |