Получить с точностью до наносекунды atime, mtime, ctime поля для файла (stat?) - PullRequest
12 голосов
/ 26 августа 2011

Некоторые файловые системы (например, ext4 и JFS) предлагают наносекундное разрешение полей atime / mtime. Как я могу прочитать поля ns-разрешения? stat системный вызов возвращает time_t, что является вторым разрешением.

1 Ответ

11 голосов
/ 26 августа 2011

Время второго разрешения в полях:

           time_t    st_atime;   /* time of last access */
           time_t    st_mtime;   /* time of last modification */
           time_t    st_ctime;   /* time of last status change */

Но раздел "ЗАМЕЧАНИЯ" человека http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html говорит:

Начиная с ядра 2.5.48, структура stat поддерживает наносекундное разрешение для трех полей временных меток файла. Glibc выставляет наносекундный компонент каждого поле с использованием имен в форме st_atim.tv_nsec, если _BSD_SOURCE или Макрос функционального теста _SVID_SOURCE определен. Эти поля указаны в POSIX.1-2008, и, начиная с версии 2.12, glibc также предоставляет эти поля имена, если _POSIX_C_SOURCE определено со значением 200809L или больше, или _XOPEN_SOURCE определяется со значением 700 или больше. Если ни один из вышеупомянутые макросы определены, затем наносекундные значения выставляются с Имена формы st_atimensec.

Таким образом, nsec-части времени находятся в одной и той же "struct stat": (/usr/include/asm/stat.h)

 unsigned long st_atime_nsec;

 unsigned int st_mtime_nsec;

 unsigned long st_ctime_nsec;

 #define STAT_HAVE_NSEC 1
...