STAT(2) STAT(2)
НАЗВАНИЕ
stat, fstat - получение статуса файла
СИНТАКСИС
#include
#include
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 присваивает-
ся код ошибки.
STAT(5) STAT(5)
НАЗВАНИЕ
stat - данные, возвращаемые системным вызовом stat
СИНТАКСИС
#include
#include
ОПИСАНИЕ
Системные вызовы stat(2) и fstat(2) возвращают данные,
структура которых описана во включаемом файле . Назначение бит, входящих в поле st_mode, также
определяется в этом файле.
Структура, возвращаемая системным вызовом stat:
struct stat {
dev_t st_dev;
ushort st_ino;
ushort st_mode;
short st_nlink;
ushort st_uid;
ushort st_gid;
dev_t st_rdev;
off_t st_size;
time_t st_atime;
time_t st_mtime;
time_t st_ctime;
};
#define S_IFMT 0170000 /* Маска для выделения типа
файла */
#define S_IFDIR 0040000 /* Каталог */
#define S_IFCHR 0020000 /* Специальный символьный */
#define S_IFBLK 0060000 /* Специальный блочный */
#define S_IFREG 0100000 /* Обычный файл */
#define S_IFIFO 0010000 /* Именованный канал */
#define S_ISUID 04000 /* Установить идентификатор
пользователя при выполнении*/
#define S_ISGID 02000 /* Установить идентификатор
группы при выполнении */
#define S_ISVTX 01000 /* Сохранить сегмент команд
после завершения выполнения
*/
#define S_IREAD 00400 /* Право на чтение для вла-
дельца */
#define S_IWRITE 00200 /* Право на запись для вла-
дельца */
#define S_IEXEC 00100 /* Право на выполнение/поиск
для владельца */
#define S_ENFMT S_ISGID /* Флаг разрешения блокировки
доступа */
#define S_IRWXU 00700 /* Чтение, запись, выполнение:
владелец */
#define S_IRUSR 00400 /* Право на чтение: владелец*/
#define S_IWUSR 00200 /* Право на запись: владелец*/
#define S_IXUSR 00100 /* Право на выполнение: владе-
лец */
#define S_IRWXG 00070 /* Чтение, запись, выполнение:
группа */
#define S_IRGRP 00040 /* Право на чтение: группа */
#define S_IWGRP 00020 /* Право на запись: группа */
#define S_IXGRP 00010 /* Право на выполнение: группа
*/
#define S_IRWXO 00007 /* Чтение, запись, выполнение:
прочие */
#define S_IROTH 00004 /* Право на чтение: прочие */
#define S_IWOTH 00002 /* Право на запись: прочие */
#define S_IXOTH 00001 /* Право на выполнение: прочие
*/
СМ. ТАКЖЕ
stat(2), types(5).
|