stat (Unix)
stat() è una chiamata di sistema Unix che restituisce dati utili sull'inode di un file. La semantica della chiamata stat() varia fra i diversi sistemi operativi.
Il comando Unix ls la utilizza per raccogliere varie informazioni, tra le quali:
- mtime: orario dell'ultima modifica (
ls -l
) - ctime: orario dell'ultimo cambiamento di stato (
ls -lc
) - atime: orario dell'ultimo accesso (
ls -lu
)
La funzione stat() e la struttura stat
modificaLo standard POSIX dichiara nel file di libreria sys/stat.h
la funzione stat()
:
int stat (const char *filename, struct stat *buf);
Definisce inoltre la struttura dati struct stat
, contenente i seguenti attributi:
dev_t st_dev; /* ID del dispositivo contenente file */
ino_t st_ino; /* numero dell'inode */
mode_t st_mode; /* protezione */
nlink_t st_nlink; /* numero di hard links */
uid_t st_uid; /* user ID del proprietario */
gid_t st_gid; /* group ID del proprietario */
dev_t st_rdev; /* ID del dispositivo (se il file speciale) */
off_t st_size; /* dimensione totale, in byte */
blksize_t st_blksize; /* dimensione dei blocchi di I/O del filesystem */
blkcnt_t st_blocks; /* numero di blocchi assegnati */
time_t st_atime; /* tempo dell'ultimo accesso */
time_t st_mtime; /* tempo dell'ultima modifica */
time_t st_ctime; /* tempo dell'ultimo cambiamento */
Funzioni correlate
modificalstat()
modifica int lstat (const char *filename, struct stat *buf);
lstat()
è una funzione di libreria che recupera lo stato di un file. È identica a stat()
, eccetto quando il file è un collegamento simbolico: in tal caso, vengono restituite informazioni riguardo al link stesso e non il file a cui esso è collegato.
fstat()
modifica int fstat (int filedesc, struct stat *buf);
fstat()
è una funzione di libreria che recupera lo stato di un file. È identica a stat()
, tranne per il fatto di utilizzare un file descriptor al posto del nome per identificare il file.
ctime, mtime, atime
modificaSi noti che ctime non rappresenta la creazione del file, bensì la modifica all'inode del file.
Un'operazione di scrittura modifica mtime, ctime e atime. Un cambiamento di permessi dei file cambia ctime. La lettura di un file cambia atime.
Un file system montato con l'opzione noatime non aggiorna atime se vengono effettuate chiamate di lettura. Un file system montato con l'opzione relatime prevede aggiornamenti solo se il valore precedente di atime è più vecchio rispetto a quello di mtime o ctime.
A differenza di atime e mtime, ctime non può essere impostato con la funzione utime()
. L'unico modo per impostarlo su un valore arbitrario è cambiando l'orologio del sistema.
Collegamenti esterni
modifica- (EN) stat(2) sul Manuale Linux per Programmatori, su linux.die.net.