statvfs(), statvfs64()

Получить информацию о файловой системе

Прототип:

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

Аргументы:

path
Путь к файлу, который находится в файловой системе.
buf
Указатель на struct statvfs или struct statvfs64 где функция может хранить информацию.

Библиотека:

libc

Описание:

Функция statvfs() возвращает «общий суперблок», описывающий файловую систему; его можно использовать для получения информации о смонтированных файловых системах. Функция statvfs64() является 64-битной версией statvfs(). Функции fstatvfs() и fstatvfs64() аналогичны, но вместо пути они принимают файловый дескриптор.

Тип файловой системы известен операционной системе. Не нужно иметь разрешение на чтение, запись или выполнение для указанного файла, но все каталоги, перечисленные в пути к файлу, должны быть доступны для поиска.

Аргумент buf является указателем на struct statvfs или struct statvfs64, который заполняется функцией.

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

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

Коды ошибок:

EACCES
Отсутствуют права на поиск для компонента пути или префикса.
EFAULT
Аргумент path или buf указывает на недопустимый адрес.
EINTR
Выполнение прервано сигналом.
EIO
Произошла ошибка ввода-вывода при чтении файловой системы.
ELOOP
Было обнаружено слишком много символьных ссылок при трансляции path.
EMULTIHOP
Компоненты пути path требуют перехода к нескольким удалённым машинам, но тип файловой системы не позволяет это сделать.
ENAMETOOLONG
Длина компонента пути превышает {NAME_MAX} символов или длина path превышает {PATH_MAX} символов.
ENOENT
Не существует компонент префикса пути или файл, на который указывает path.
ENOLINK
Аргумент path указывает на удаленную машину, но ссылка на эту машину больше не активна.
ENOTDIR
Компонент префикса пути path не является каталогом.
EOVERFLOW
Одно из возвращаемых значений не может быть правильно представлено в структуре, на которую указывает buf.

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

statvfs() — POSIX 1003.1 X/Open Systems Interfaces Extension; statvfs64() — Поддержка больших файлов

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

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

chmod(), chown(), creat(), dup(), fcntl(), fstatvfs(), fstatvfs64(), link(), mknod(), open(), pipe(), read(), struct statvfs, struct statvfs64, time(), unlink(), utime(), write()




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