Как отобразить время последней модификации файла на 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, которую вы можете использовать напрямую
http://www.thegeekstuff.com/2009/07/unix-stat-command-how-to-identify-file-attributes/
Ответ 5
Чтобы выполнить ответы от Andrew и ZelluX.
Ограничение в файловой системе. Для Linux ext3 обычно используется, и вы можете видеть в википедии:
Date resolution 1s