stat (Unix)

Da Wikipedia, l'enciclopedia libera.

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[modifica | modifica wikitesto]

Lo 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[modifica | modifica wikitesto]

lstat()[modifica | modifica wikitesto]

 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 | modifica wikitesto]

 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[modifica | modifica wikitesto]

Si 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 | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica