STAT(2)
НАЗВАНИЕ
stat, fstat - получение статуса файла
СИНТАКСИС
#include <sys/types.h>
#include <sys/stat.h>
int stat (path, buf)
char *path;
struct stat *buf;
int fstat (fildes, buf)
int fildes;
struct stat *buf;
ОПИСАНИЕ
Аргумент path указывает на маршрутное имя файла. Не
требуется наличие прав доступа на чтение, запись и выполнение заданного файла, но все каталоги, перечисленные перед именем файла в маршрутном имени, должны быть
доступны на поиск. Системный вызов stat предоставляет
информацию о поименованном файле.
Системный вызов fstat предоставляет информацию об открытом файле, задаваемом с помощью дескриптора файла
fildes, который возвращается успешно завершенными системными вызовами open, creat, dup, fcntl или pipe.
Аргумент buf является указателем на стуктуру типа stat,
в которую помещается информация о файле.
Структура, на которую указывает buf, содержит следующие
поля:
ushort st_mode; /* Режим файла [см. mknod(2)] */
ino_t st_ino; /* Номер описателя файла */
dev_t st_dev; /* Идент. устройства, содержащего
каталог с входом в этот файл */
dev_t st_rdev; /* Идент. устройства. Поле определено
только для специальных символьных и
блочных файлов */
short st_nlink; /* Количество ссылок */
ushort st_uid; /* Идент. владельца файла */
ushort st_gid; /* Идент. группы владельца файла */
off_t st_size; /* Размер файла в байтах */
time_t st_atime; /* Время последнего доступа к файлу */
time_t st_mtime; /* Время последней записи в файл */
time_t st_ctime; /* Время последнего изменения статуса
файла */
/* Время измеряется в секундах от 00:00:00
1 января 1970г. по Гринвичу */
- st_mode
- Режим файла согласно определению, данному при описании системного вызова mknod(2).
- st_ino
- Это поле однозначно определяет файл в данной файловой системе. Пара (st_ino, st_dev) однозначно
определяет обычные файлы.
- st_dev
- Это поле однозначно определяет файловую систему,
содержащую файл. Значение поля может использоваться в качестве входного аргумента системного вызова
ustat(2) при получении дополнительной информации
об этой файловой системе. Никакого другого смысла
это поле не имеет.
- st_rdev
- Это поле следует использовать только для команд
администратора. Оно имеет смысл лишь для специальных блочных и символьных файлов и только в той
системе, где файл был сконфигурирован.
- st_nlink
- Это поле следует использовать только для команд
администратора.
- st_uid
- Идентификатор владельца файла.
- st_gid
- Идентификатор группы владельца файла.
- st_size
- Для обычных файлов это адрес конца файла. Для каналов это текущее количество данных в файле. Для
специальных блочных и символьных файлов значение
поля не определено.
- st_atime
- Время последнего доступа к данным. Это поле изменяется следующими системными вызовами: creat(2),
mknod(2), pipe(2), utime(2) и read(2).
- st_mtime
- Время последней модификации данных. Это поле изменяется следующими системными вызовами: creat(2),
mknod(2), pipe(2), utime(2) и write(2).
- st_ctime
- Время последнего изменения статуса файла. Это поле
изменяется следующими системными вызовами:
chmod(2), chown(2), creat(2), link(2), mknod(2),
pipe(2), unlink(2), utime(2) и write(2).
Системный вызов stat завершается неудачей, если выполнено хотя бы одно из следующих условий:
- [ENOTDIR]
- Компонент маршрута не является каталогом.
- [ENOENT]
- Заданный файл не существует.
- [EACCES]
- Нет права на поиск для компонента маршрута.
- [EFAULT]
- Аргументы buf или path указывают за пределы
отведенного процессу адресного пространства.
- [EINTR]
- Во время выполнения системного вызова перехвачен сигнал.
- [ENOLINK]
- Маршрутное имя path указывает на удаленный
компьютер, связи с которым в данный момент
нет.
- [EMULTIHOP] Компоненты path требуют многократного обращения к удаленным компьютерам.
Системный вызов fstat завершается неудачей, если выполнено хотя бы одно из следующих условий:
- [EBADF]
- Аргумент fildes не является корректным
дескриптором открытого файла.
- [EFAULT]
- Аргументы buf или path указывают за пределы
отведенного процессу адресного пространства.
- [ENOLINK]
- Дескриптор файла fildes указывает на удаленный компьютер, связи с которым в данный
момент нет.
СМ. ТАКЖЕ
chmod(2), chown(2), creat(2), link(2), mknod(2),
pipe(2), read(2), time(2), unlink(2), utime(2),
write(2).
ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае
ошибки возвращается -1, а переменной errno присваивается код ошибки.