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 присваивает ся код ошибки.