Można użyć utimes.
Jeżeli czas jest niezerowe, to zakłada się wskazywać tablicę dwóch timeval struktur. Czas dostępu jest ustawiony na wartość pierwszego elementu, , a czas modyfikacji jest ustawiony na wartość drugiego elementu.
I:
Dla systemów plików, które obsługują plików narodziny (tworzenie) razy (takie jak UFS2), czas urodzenie zostanie ustawiona na wartość drugiego elementu jeśli drugi element jest starszy niż obecnie ustawiony czas porodu. Aby ustawić zarówno czas urodzenia, jak i czas modyfikacji, wymagane są dwa połączenia; pierwszy set czas urodzenia, a drugi do ustawienia (przypuszczalnie nowszej) modyfikację czasu
Jako przykład:
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", ×);
Jeżeli czas modyfikacji przekazywana jest starszy niż aktualny czas tworzenia pliku, czas utworzenia zostanie ustawiony. Następnie możesz ponownie zadzwonić pod numer utimes
, jeśli chcesz ustawić inny czas modyfikacji.
Ah, brakowało mi drugiej informacji. Jeśli dobrze rozumiem, mogę ustawić czas urodzenia na starszą datę niż obecny czas urodzenia? Nie mogę ustawić go na nowszą datę? –
Strona podręczna dla 'utimes', która jest dostarczana z aktualnymi wersjami OS X (sprawdziłem 10.10), pochodzi z 1993 roku i nie wspomina o wsparciu czasu porodu. Jednak faktycznie działa to w systemie OS X 10.10.5 z drobną zmianą: zamiast 'sekund' użyj' tv_sec' w tablicy 'times'. – hendrik