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:


|