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.

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

Пример:

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