Stat (Unix)
# 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

Lo standard POSIX dichiara nel file di libreria sys/stat.h la funzione stat:

Definisce inoltre la struttura dati struct stat, contenente i seguenti attributi:

## Funzioni correlate

### lstat

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

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

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.

