Введение

Системный вызов Unix – это системный вызов Unix, который возвращает атрибуты файла об иноде. Семантика `stat` варьируется в зависимости от операционной системы. В качестве примера, команда Unix `stat` использует этот системный вызов для получения информации о файлах, включающей:
atime: время последнего доступа
mtime: время последней модификации
ctime: время последнего изменения статуса

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

c время

Вызывает соблазн полагать, что изначально это означало время создания; однако, хотя в ранних версиях Unix существовали время модификации и время создания, последнее было изменено на время доступа ещё до появления какой-либо структуры на C, в которой можно было что-либо вызывать. Файловые системы сохраняли только время доступа и время модификации вплоть до 6-й редакции Unix. Метка времени (timestamp) была добавлена при реструктуризации файловой системы, произошедшей в 7-й версии Unix, и всегда относится ко времени изменения inode. Она обновляется всякий раз, когда изменяются метаданные файла, хранящиеся в inode, такие как разрешения файла, владелец файла, создание и удаление жёстких ссылок. POSIX также предписывает обновление (последнего изменения статуса) с ненулевым значением (модификации файла). В некоторых реализациях на переименование файла влияет, несмотря на то, что имена файлов не хранятся в inode: как оригинальный Unix, который реализовал переименование путём создания ссылки (обновление ) и последующего удаления старого имени (повторное обновление ), так и современный Linux обычно поступают таким образом. В отличие от и , нельзя задать произвольное значение с помощью , как это делает, например, утилита . Вместо этого, при использовании или при любом другом изменении inode, кроме обновления, вызванного доступом к файлу, значение устанавливается на текущее время.

Гранулярность времени

дает время с точностью до одной секунды. Некоторые файловые системы обеспечивают более высокую точность. Solaris 2.1 представила микросекундное разрешение для UFS в 1992 году и наносекундное разрешение для ZFS. В ядрах Linux версии 2.5.48 и выше структура stat поддерживает наносекундное разрешение для трех полей меток времени файла. Это проявляется в виде дополнительных полей в структуре stat. Разрешение времени создания на файловой системе FAT составляет 10 миллисекунд, разрешение времени записи – две секунды, а разрешение времени доступа – один день, поэтому оно фактически представляет собой дату доступа.