Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Fstat

CuBook05

Функция

Получает информацию об открытом файле.
 
Синтаксис

#include <sys\stat.h>
int fstat(char* handle, struct stat* buff)
 
Прототип

sys\stat.h
 
Описание

Функция fstat записывают информацию об открытом файле (или директории), связанным с дескриптором handle в структуру stat. Aргумент buff адресует структуру stat (определенную в файле sys\stat.h). Структура содержит следующие поля:
st_mode - битовая маска, дающая информацию о режиме открытия файла;
st_dev - идентификатор дисковода, на котором был открыт файл, или номер handle, если файл находится на устройстве;
st_rdev - так же, как и st_dev;
st_nlink - присваивается целая константа 1;
st_size - размер открытого файла в байтах;
st_atime - ближайшее время открытия файла, во время которого он был модифицирован;
st_mtime - так же, как и st_atime;
st_ctime - так же, как и st_atime.

Структура stat содержит на три поля больше, чем перечислено выше, они содержат данные, которые под управлением DOS не имеют значения.
Битовая маска, дающая информацию о режиме открытого файла, содержит следующие биты:
Один из следующих битов должен быть установлен:
S_IFCHR - установлен, если параметр handle указывает на устройство (fstat);
S_IFREG - установлен, если обычный файл определяется параметром handle

Один или оба следующих бита должны быть установлены:
S_IWRITE - установлен, если пользователь имеет разрешение на запись;
S_IREAD - установлен, если пользователь имеет разрешение на чтение.
Битовая маска также имеет биты чтения/записи, они устанавливаются в соответствии с режимом доступа к файлу.
 
Возвращаемое значение

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

Нет.
 
Пример

#include<sys\stat.h>
#include<stdio.h>
#include<time.h>

int main(void)
{
struct stat statbuf;
FILE *stream;
/* открыть файл для изменения */
if((stream = fopen("DUMMY.FIL","w+")) == NULL)
{
fprintf(stderr,"Не могу открыть файл.\n");
return 1;
}
fprintf(stream,"Это тест");
fflush(stream);
/* получить информацию о файле */
fstat(fileno(stream),&statbuf);
/* вывести полученную информацию */
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;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий