2010-10-26 5 views
12

Mi è stato detto da un professore che è possibile ottenere l'ultima modifica di un file utilizzando utime.h. Tuttavia, la pagina man sembra citare che utime() imposta solo questo valore. Come posso cercare l'ultima volta che un file è stato modificato in C su un sistema UNIX?Tempo di modifica file su UNIX utilizzando utime in C

risposta

12

Restituisce il file mtime, il "momento dell'ultima modifica dei dati". Si noti che Unix ha anche un concetto ctime, il "tempo dell'ultimo cambio di stato" (vedere anche ctime, atime, mtime).

#include <sys/types.h> 
#include <sys/stat.h> 

time_t get_mtime(const char *path) 
{ 
    struct stat statbuf; 
    if (stat(path, &statbuf) == -1) { 
     perror(path); 
     exit(1); 
    } 
    return statbuf.st_mtime; 
} 
+0

ehi come puoi ottenere l'anno da time_t? grazie –

+0

@AldySyahdeini 'localtime (3)' –

+0

Questo è stato risolto nel 2010 ma è ora 2016 e la risoluzione nanosecondo è stata implementata dal kernel Linux 2.5.48, POSIX.1-2008 e glibc 2.12. Quindi usare 'statbuf.st_mtim' per ottenere' struct timespec' invece di usare 'statbuf.st_mtime' dovrebbe funzionare ovunque in questi giorni. – josch

2

È possibile utilizzare la chiamata di sistema stat per ottenere gli ultimi orari di accesso e modifica.