Как отобразить время последней модификации файла на linux
Я хочу написать программу на C, чтобы отобразить время последней модификации файла в микросекундах или миллисекундах. Как я могу это сделать? Не могли бы вы мне помочь?
Большое спасибо.
Ответ 1
Используется функция stat(). В достаточно последних версиях glibc st_mtim (примечание: no trailing e) - это поле типа struct timespec, которое содержит время изменения файла:
struct stat st;
if (stat(filename, &st)) {
perror(filename);
} else {
printf("%s: mtime = %lld.%.9ld\n", filename, (long long)st.st_mtim.tv_sec, st.st_mtim.tv_nsec);
}
Вы должны проверить наличие st_mtim в struct stat в вашей системе сборки и быть готовы вернуться к st_mtime (который имеет тип time_t и только 1 секунду разрешения), если это не присутствует.
Ответ 2
Вы можете использовать функцию stat(), она вернет struct stat, который содержит время последней модификации файла. Вот страница man http://linux.die.net/man/2/stat. Что касается точности, это зависит от того, поддерживает ли ваша файловая система субсекундные временные метки или нет.
Ответ 3
JFS, XFS, ext4 и Btrfs поддерживают наносекундные временные метки.
В книге "Интерфейс программирования Linux" Майкла Керриска есть хороший раздел об атрибутах файла
Ответ 4
Существует команда stat, которую вы можете использовать напрямую