stat (Unix)

comando dei sistemi operativi Unix e Unix-like

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

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

lstat()

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

modifica

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
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica