Как отобразить время последней модификации файла на 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" Майкла Керриска есть хороший раздел об атрибутах файла

Ответ 5

Чтобы выполнить ответы от Andrew и ZelluX.
Ограничение в файловой системе. Для Linux ext3 обычно используется, и вы можете видеть в википедии:

Date resolution   1s