STATFS(2)          Manuel du programmeur Linux          STATFS(2)


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/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:



Linux 2.0.30             11 Décembre 1997                       1





STATFS(2)          Manuel du programmeur Linux          STATFS(2)


                 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/xia_fs.h:
                 _XIAFS_SUPER_MAGIC     0x012FD16D

       Les  champs  indéfinis  pour  un système de fichiers donné
       sont mis à -1.

       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:




Linux 2.0.30             11 Décembre 1997                       2





STATFS(2)          Manuel du programmeur Linux          STATFS(2)


       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");



Linux 2.0.30             11 Décembre 1997                       3





STATFS(2)          Manuel du programmeur Linux          STATFS(2)


                      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,



Linux 2.0.30             11 Décembre 1997                       4





STATFS(2)          Manuel du programmeur Linux          STATFS(2)


                 "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É
       BSD 4.4.

VOIR AUSSI
       stat(2)


TRADUCTION
       Christophe Blaess, 1997.























Linux 2.0.30             11 Décembre 1997                       5