Введение
Системный вызов Unix – это системный вызов Unix, который возвращает атрибуты файла об иноде. Семантика `stat` варьируется в зависимости от операционной системы. В качестве примера, команда Unix `stat` использует этот системный вызов для получения информации о файлах, включающей:
atime: время последнего доступа
mtime: время последней модификации
ctime: время последнего изменения статуса
is a Unix system call that returns file attributes about an inode. The semantics of vary between operating systems. As an example, Unix command uses this system call to retrieve information on files that includes:
atime: time of last access
mtime: time of last modification
ctime: time of last status change
stat appeared in Version 1 Unix. It is among the few original Unix system calls to change, with Version 4's addition of group permissions and larger file size.
`stat` появился в первой версии Unix. Это один из немногих оригинальных системных вызовов Unix, который претерпел изменения, с добавлением групповых прав доступа и поддержки больших размеров файлов в четвертой версии.
is a Unix system call that returns file attributes about an inode. The semantics of vary between operating systems. As an example, Unix command uses this system call to retrieve information on files that includes:
atime: time of last access
mtime: time of last modification
ctime: time of last status change
stat appeared in Version 1 Unix. It is among the few original Unix system calls to change, with Version 4's addition of group permissions and larger file size.
c время
Вызывает соблазн полагать, что изначально это означало время создания; однако, хотя в ранних версиях Unix существовали время модификации и время создания, последнее было изменено на время доступа ещё до появления какой-либо структуры на C, в которой можно было что-либо вызывать. Файловые системы сохраняли только время доступа и время модификации вплоть до 6-й редакции Unix. Метка времени (timestamp) была добавлена при реструктуризации файловой системы, произошедшей в 7-й версии Unix, и всегда относится ко времени изменения inode. Она обновляется всякий раз, когда изменяются метаданные файла, хранящиеся в inode, такие как разрешения файла, владелец файла, создание и удаление жёстких ссылок. POSIX также предписывает обновление (последнего изменения статуса) с ненулевым значением (модификации файла). В некоторых реализациях на переименование файла влияет, несмотря на то, что имена файлов не хранятся в inode: как оригинальный Unix, который реализовал переименование путём создания ссылки (обновление ) и последующего удаления старого имени (повторное обновление ), так и современный Linux обычно поступают таким образом. В отличие от и , нельзя задать произвольное значение с помощью , как это делает, например, утилита . Вместо этого, при использовании или при любом другом изменении inode, кроме обновления, вызванного доступом к файлу, значение устанавливается на текущее время.
accessing the file, the value is set to the current time.
Гранулярность времени
дает время с точностью до одной секунды. Некоторые файловые системы обеспечивают более высокую точность. Solaris 2.1 представила микросекундное разрешение для UFS в 1992 году и наносекундное разрешение для ZFS. В ядрах Linux версии 2.5.48 и выше структура stat поддерживает наносекундное разрешение для трех полей меток времени файла. Это проявляется в виде дополнительных полей в структуре stat. Разрешение времени создания на файловой системе FAT составляет 10 миллисекунд, разрешение времени записи – две секунды, а разрешение времени доступа – один день, поэтому оно фактически представляет собой дату доступа.