Provided by:
manpages-es_1.55-10_all 
NOMBRE
statfs, fstatfs - obtiene estadisticas del sistema de ficheros
SINOPSIS
#include <sys/vfs.h>
int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);
DESCRIPCI'ON
statfs devuelve informacion de un sistema de ficheros montado. path el
el camino de cualquier fichero en el sistema de ficheros montado. buf
es un puntero a una estructura statfs definida como sigue:
struct statfs {
long f_type; /* tipo sistema ficheros (ver bajo) */
long f_bsize; /* tamano optimo de bloque
de transferencia */
long f_blocks; /* total de bloques de datos en el sistema
de ficheros */
long f_bfree; /* bloques libres en el sf */
long f_bavail; /* bloques libres disponibles para
no-superusuarios */
long f_files; /* total de nodos de ficheros en el sf */
long f_ffree; /* nodos de ficheros libres en el sf */
fsid_t f_fsid; /* id del sistema de ficheros */
long f_namelen; /* longitud maxima de nombre de ficheros */
long f_spare[6]; /* de sobra, para mas tarde */
};
Tipos de sistema de ficheros:
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 orig.*/
MINIX_SUPER_MAGIC2 0x138F /* minix 30 carac.*/
MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */
MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, nombres 30 carac. */
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
Nadie sabe lo que f_fsid se supone que contiene (vea mas abajo).
Los campos no definidos para un sistema de ficheros particular se ponen
a 0. fstatfs devuelve la misma informacion sobre un fichero abierto
referenciado por el descriptor fd.
VALOR DEVUELTO
Si hubo exito se devuelve cero. Si hubo error, se devuelve -1, y errno
es actualizado apropiadamente.
ERRORES
Para statfs:
ENOTDIR
Un componente del camino path no es un directorio.
ENAMETOOLONG
path es demasiado largo.
ENOENT El fichero al que se refiere path no existe.
EACCES El permiso de busqueda se deniega para un componente del camino
path.
ELOOP Se encontraron demasiados enlaces simbolicos al traducir path.
EFAULT buf o path apuntan a una direccion invalida.
EIO Ocurrio un error de E/S mientras se leia o escribia en el
sistema de ficheros.
ENOMEM No habia suficiente memoria disponible en el nucleo.
ENOSYS El sistema de ficheros sobre el que se encuentra path no soporta
statfs.
Para fstatfs:
EBADF fd no es un descriptor de fichero valido.
EFAULT buf apunta a una direccion invalida.
EIO Ocurrio un error de E/S mientras se leia o escribia en el
sistema de ficheros.
ENOSYS El sistema de ficheros sobre el que esta abierto fd no soporta
statfs.
CONFORME A
La version de Linux de statfs esta inspirada en la de 4.4BSD (aunque no
usan la misma estructura).
f_fsid
Solaris y POSIX 1003.1-2001 poseen una llamada al sistema statvfs que
devuelve una estructura statvfs (definida en <sys/statvfs.h>) con un
campo f_fsid de tipo unsigned long . Linux, SunOS, HPUX y 4.4BSD
poseen una llamada al sistema statfs que devuelve una estructura statfs
(definida en <sys/vfs.h>) con un campo f_fsid de tipo fsid_t , donde
fsid_t esta definido como struct { int val[2]; }. Lo mismo se aplica
para FreeBSD, salvo que utiliza el fichero de cabecera <sys/mount.h>.
La idea general es que f_fsid contenga informacion aleatoria de manera
que el par (f_fsid,ino) determine univocamente un fichero. Algunos SOs
usan (una variante de) el numero de dispositivo, o el numero de
dispositivo combinado con el tipo de sistema de ficheros. Muchos SOs
restringen el acceso al campo f_fsid solamente al superusuario
(poniendolo a cero para aquellos usuarios sin privilegios), ya que este
campo es usado en el manejo de ficheros del sistema de ficheros cuando
es exportado mediante NFS, y conceder acceso a el es un problema de
seguridad.
En algunos SOs fsid puede ser usado como segundo parametro en la
llamada al sistema sysfs().
V'EASE TAMBI'EN
stat(2)