È possibile utilizzare utimes.
Se i tempi non sono NULL, si presume che puntino a una matrice di due strutture temporali . Il tempo di accesso è impostato sul valore del primo elemento, e il tempo di modifica è impostato sul valore del secondo elemento.
E:
Per i file system che supportano file di nascita (creazione) volte (come ad esempio UFS2), il tempo di nascita sarà impostato al valore del secondo elemento se il secondo elemento è più vecchio del tempo di nascita attualmente impostato. Per impostare sia il tempo di nascita e un tempo di modifica, sono necessarie due chiamate; il primo per impostare il tempo di nascita e il secondo per impostare il (presumibilmente più recente) modifica tempo
Per fare un esempio:
struct timeval times[2];
memset(times, 0, sizeof(times));
times[0].seconds = 946684799; /* 31 Dec 1999 23:59:59 */
times[1].seconds = 946684799;
utimes("/path/to/file", ×);
Se la data di modifica passato è più vecchio del tempo di creazione corrente del file, verrà impostato il tempo di creazione. È quindi possibile chiamare di nuovo utimes
se si desidera impostare un orario di modifica diverso.
fonte
2015-11-07 19:48:44
Ah, mi mancava la seconda informazione. Se capisco correttamente, posso solo impostare il tempo di nascita su una data più vecchia rispetto all'ora di nascita corrente? Non posso impostarlo su una data più recente? –
La pagina di manuale per 'utimes' che viene fornita con le versioni correnti di OS X (ho controllato 10.10), è del 1993 e non menziona il supporto del tempo di nascita. Tuttavia, questo funziona davvero su OS X 10.10.5 con una piccola modifica: invece di 'secondi' usa' tv_sec' sulla matrice 'times'. – hendrik