Описание функций Си

       

Stat



     stat

Функция Получает информацию о файле.

Синтаксис #inslude

int stat(char *path, struct stat *buff);

Файл, содержащий sys\stat.h прототип

Описание Функция stat записывает информацию о файле (или директории) в структуре stat.

Аргумент buff адресует структуру stat (определен- ную в файле sys\stat.h). Структура содержит сле- дующие поля:

st_mode битовая маска, дающая информацию о режиме открытия файла.

st_dev идентификатор дисковода содержащего файл.

st_rdev также, как и st_dev.

st_nlink присваевается целая константа 1.

st_size размер открытого файла в байтах.

st_atime ближайшее время открытия файла, во время которого он был модифицирован.



st_mtime также, как и st_atime.

st_ctime также, как и st_atime.

Структура stat содержит на три поля больше, чем перечислено выше, но они содержат данные, которые под управлением MS-DOS не имеют значения.

Битовая маска, дающая информацию о режиме откры- того файла, содержит следующие биты:

Один из следующих битов должен быть выставлен:

/* прим. пер. в S_IFCHR установлен, если параметр handle указывает оригинале нет: */ на устройство (fstat);

S_IFREG установлен, если обычный файл определяет- ся параметром handle (fstat),или парамет- ром path (stat).

S_IFDIR установлен, если параметр path определяет директорию (stat);

Один или оба следующих бита должны быть выставле- ны:

S_IWRITE установлен, если пользователь имеет раз- решение на запись;

S_IREAD установлен, если пользователь имеет раз- решение на чтение.

Для функции stat битовая маска содержит также би- ты пользовательского выполнения; они устанавлива- ются в соответствии с расширением имени открытого файла. Битовая маска также имеет биты чтения/за- писи, они устанавливаются в соответствии с режи- мом доступа к файлу.

Возвращаемое Если информация об открытом файле была успешно по- значение лучена, функция возвращает 0. В случае ошибки (невозможно получить информацию), функция возвра- щает значение -1 и устанавливает переменную errno.


ENOENT - Файл или маршрут не найдены.

Переносимость stat доступна в системах UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

#include

#define FILENAME "TEST.$$$"

int main(void) { struct stat statbuf; FILE *stream; /* открыть файл для изменения */ if((stream = fopen(FILENAME,"w+")) == NULL) { fprintf(stderr,"Не могу открыть файл.\n"); return 1; } /* получить информацию о файле */ stat(FILENAME,&statbuf); fclose(stream); /* вывести полученную информацию */ if(statbuf.st_mode & S_IFCHR) printf("Это устройство\n"); if(statbuf.st_mode & S_IFREG) printf("Это файл\n"); if(statbuf.st_mode & S_IREAD) printf("Разрешение на чтение\n"); if(statbuf.st_mode & S_IWRITE) printf("Разрешение на запись"); printf("Метка диска:%c\n",'A'+statbuf.st_dev); printf("Размер в байтах: %ld\n",statbuf.st_size); printf("Время последнего открытия: %s\n", ctime(&statbuf.st_ctime)); return 0; }


Содержание раздела