fstat

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

 Синтаксис          #include 
                    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 - Неверный номер файла.

 Смотрите также     access chmod stat

 Пример:

 #include
 #include
 #include

 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;
 }