Time (Unix)
# Time (Unix)

time (dalla lingua inglese time, tempo) è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX, che avvia un programma e, quando esso termina, visualizza sullo standard error il tempo impiegato per eseguirlo, diviso in tre valori:

* il tempo di esecuzione reale (il tempo trascorso dall'avvio al termine del programma);
* il tempo di CPU utente (il tempo impiegato dalla CPU per eseguire le istruzioni non di sistema del programma — vedi anche user mode);
* il tempo di CPU di sistema (il tempo impiegato dalla CPU per eseguire le istruzioni di sistema del programma — vedi anche kernel mode).

La somma del tempo di CPU di sistema e del tempo di CPU utente è tipicamente inferiore al tempo totale di esecuzione, in quanto ai primi due va sommato anche il tempo in cui il programma rimane inattivo (perché ad esempio la CPU è impegnata ad eseguire altri programmi, o è in attesa che una periferica si renda disponibile).

time è anche il nome di una chiamata di sistema definita dallo standard POSIX che ritorna la data e ora correnti come numero di secondi trascorsi rispetto alla mezzanotte (UTC) del 1º gennaio 1970 (data detta epoca), secondo la consueta rappresentazione del tempo nei sistemi Unix.

Notare che il comando time non usa l'omonima chiamata di sistema, ma usa invece la chiamata di sistema times.

## Il comando time

La sintassi generale del comando time è la seguente:

I parametri comando e arg specificano il comando di cui misurare il tempo di esecuzione, insieme ai suoi eventuali parametri.

Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.

L'unica opzione di rilievo è -p che indica di mostrare i valori in un formato standard.

### Esempi

Esegue il comando sort -n file.txt > file_ordinato.txt mostrando il tempo impiegato:

Come sopra, ma visualizza i tempi usando un formato standard:

## La chiamata di sistema time

La chiamata di sistema time è dichiarata nello header file time.h:

Il tipo time_t è un tipo che rappresenta una quantità di secondi.

Il parametro t è un puntatore ad una variabile di tipo time_t che viene avvalorata con il risultato (solo se t è diverso da NULL).

### Valore di ritorno

In caso di successo viene restituito il numero di secondi trascorsi dall'epoca, altrimenti viene ritornato il valore -1 e la variabile errno indica l'errore specifico.

