Как отобразить время последнего изменения файла на Linux - PullRequest
11 голосов
/ 23 февраля 2011

Я хочу написать программу на C для отображения времени последнего изменения файла в микросекундах или миллисекундах.Как я мог сделать?Не могли бы вы мне помочь?

Большое спасибо.

Ответы [ 5 ]

11 голосов
/ 23 февраля 2011

Используется функция stat().В достаточно недавних версиях glibc st_mtim (примечание: без трейлинга 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 секунда), если его нет.

4 голосов
/ 23 февраля 2011

Вы можете использовать функцию stat (), она будет возвращать struct stat, которая содержит время последней модификации файла. Вот справочная страница http://linux.die.net/man/2/stat. Что касается точности, это зависит от того, поддерживает ли ваша файловая система временные метки длительностью менее секунды.

1 голос
/ 12 января 2012

Есть команда stat, которую вы можете использовать напрямую

http://www.thegeekstuff.com/2009/07/unix-stat-command-how-to-identify-file-attributes/

1 голос
/ 23 февраля 2011

JFS, XFS, ext4 и Btrfs поддерживают наносекундные метки времени.

Книга Майкла Керриска "Интерфейс программирования Linux" содержит хороший раздел об атрибутах файла

0 голосов
/ 23 февраля 2011

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

Date resolution   1s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...