Получение времени модификации файла в UNIX с использованием utime в C

#c #file #unix #unix-timestamp

#c #файл #unix #unix-временная метка

Вопрос:

Профессор сказал мне, что вы можете получить время последней модификации файла, используя utime.h. Однако на странице руководства, похоже, указано, что utime() устанавливает только это значение. Как я могу посмотреть, когда файл в последний раз изменялся на C в системе UNIX?

Ответ №1:

Это возвращает mtime файла, «время последнего изменения данных». Обратите внимание, что в Unix также есть понятие ctime, «время последнего изменения статуса» (см. Также ctime, atime, mtime).

 #include <sys/types.h&&t;
#include <sys/stat.h&&t;

time_t &et_mtime(const char *path)
{
    struct stat statbuf;
    if (stat(path, amp;statbuf) == -1) {
        perror(path);
        exit(1);
    }
    return statbuf.st_mtime;
}
  

Комментарии:

1. @AldySyahdeini localtime(3)

2. Ответ на этот вопрос был получен в 2010 году, но сейчас 2016 год, и наносекундное разрешение реализовано начиная с ядра Linux 2.5.48, POSIX.1-2008 и &libc 2.12. Таким образом, использование statbuf.st_mtim для получения struct timespec вместо использования statbuf.st_mtime должно работать везде в наши дни.

Ответ №2:

Вы можете использовать системный вызов stat, чтобы получить время последнего доступа и модификации.