INFORMACIÓ DEL SISTEMA DE FITXERS

Les funcions statfs i fstatfs que descriurem de seguida, recullen informació al voltant del sistema de fitxers que conté cert arxiu. Aquesta informació es recull mitjançant l'struct statfs que conté aquests camps:

__SWORD_TYPE f_type Tipus de sistema de fitxers (ext3, ext2, vfat, ...).
__SWORD_TYPE f_bsize Mida en bytes del bloc de transferència òptim.
__fsblkcnt_t f_blocks Nombre total de blocs en el sistema de fitxers.
__fsblkcnt_t f_bfree Nombre total de blocs lliures en el sistema de fitxers.
__fsblkcnt_t f_bavail Nombre total de blocs en el sistema de fitxers disponibles per usuaris no root.
__fsfilcnt_t f_files Nombre total d'inodes en el sistema de fitxers.
__fsfilcnt_t f_ffree Nombre total d'inodes lliures en el sistema de fitxers.
__fsid_t f_fsid Identificador del sistema de fitxers.
__SWORD_TYPE f_namelen Longitud màxima d'un nom de fitxers.
__SWORD_TYPE f_frsize El mateix que f_bsize.
__SWORD_TYPE f_spare[5] No s'utilitza.

Aquest struct es defineix en el fitxer /usr/include/bits/statfs.h i podem acabar comprovant que tots els seus camps es poden tractar com a long. Els tipus de sistema de fitxers estan codificas mitjançant unes constants que podem trobar a la pàgina man d'aquestes funcions. Alguns d'ells són:

EXT2_SUPER_MAGIC 0xEF53
ISOFS_SUPER_MAGIC 0x9660
MSDOS_SUPER_MAGIC 0x4d44
NTFS_SB_MAGIC 0x5346544e
REISERFS_SUPER_MAGIC 0x52654973
USBDEVICE_SUPER_MAGIC 0x9fa2

Les funcions que l'omplen són:

#include <sys/vfs.h>

int statfs(const char *nom_fitxer, struct statfs * ap_estat);

int fstatfs(int fd, struct statfs * ap_estat);

Totes dues retornen 0 si van bé i -1 combinat amb errno si hi ha algún error.

Com que reben un apuntador a un struct stat, cal reservar l'espai en el programa que faci la crida, tal com fem al següent exemple:

 

 

Autor: Lluís València López

Creative Commons License
Aquesta obra està subjecta a una Llicència de Creative Commons.