stat(), stat64()

Получить информацию о файле или директории по заданному пути

Прототип:

#include <sys/stat.h>
int stat( const char *path,
struct stat *buf );
int stat64( const char *path,
struct stat64 *buf );

Аргументы:

path
Путь к файлу или каталогу, о котором необходимо получить информацию.
buf
Указатель на буфер типа struct stat, где функция может хранить информацию.

Библиотека:

libc

Описание:

Функции stat() и stat64() получают информацию о файле или каталоге, указанном в параметре path. Эта информация размещается в структуре struct stat, расположенной по адресу, указанному в параметре buf.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EACCES
Отсутствуют права на поиск для компонента пути path.
EIO
На блочном устройстве произошла физическая ошибка.
ELOOP
Слишком много уровней символических ссылок или префиксов.
ENAMETOOLONG
Длина аргумента path превышает PATH_MAX или компонент имени пути длиннее NAME_MAX. PATH_MAX и NAME_MAX определены в заголовочном файле <limits.h> .
ENOENT
Указанный файл не существует, или path является пустой строкой.
ENOSYS
Функция stat() не реализована для файловой системы, указанной в path.
ENOTDIR
Компонент пути path не является каталогом.
EOVERFLOW
Размер файла в байтах или количество блоков, выделенных для файла, или серийный номер файла не могут быть правильно представлены в структуре, на которую указывает buf.

Примеры:

Определение размера файла:

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
int main( void )
{
struct stat buf;
if ( stat( "file", &buf ) != -1 )
{
printf( "File size = %d\n", buf.st_size );
}
return (EXIT_SUCCESS);
}

Определение объема свободной памяти:

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
int main( void )
{
struct stat buf;
if ( stat( "/proc", &buf ) == -1 )
{
perror( "stat" );
return (EXIT_FAILURE);
} else {
printf( "Free memory: %d bytes\n", buf.st_size );
return (EXIT_SUCCESS);
}
}

Классификация:

stat() — POSIX 1003.1; stat64() — Поддержка больших файлов

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct stat, time_t, errno, fstat(), fstat64(), lstat()




Предыдущий раздел: Описание API системной библиотеки