Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

       statvfs, fstatvfs - получение статистики по файловой системе

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <sys/statvfs.h>

       int statvfs(const char *restrict path, struct statvfs *restrict buf);
       int fstatvfs(int fd, struct statvfs *buf);

ОПИСАНИЕ

       Функция  statvfs()  возвращает информацию о смонтированной файловой системе. path является
       путём любого  файла,  расположенного  в  смонтированной  файловой  системе.  buf  является
       указателем на структуру statvfs, определённую примерно следующим образом:

           struct statvfs {
               unsigned long  f_bsize;    /* размер блока файловой системы */
               unsigned long  f_frsize;   /* размер фрагмента */
               fsblkcnt_t     f_blocks;   /* размер ФС в единицах f_frsize */
               fsblkcnt_t     f_bfree;    /* количество свободных блоков */
               fsblkcnt_t     f_bavail;   /* количество свободных блоков
                                             для непривилегированных пользователей */
               fsfilcnt_t     f_files;    /* количество inodes */
               fsfilcnt_t     f_ffree;    /* количество свободных inodes */
               fsfilcnt_t     f_favail;   /* количество свободных inodes
                                             для непривилегированных пользователей */
               unsigned long  f_fsid;     /* идентификатор файловой системы */
               unsigned long  f_flag;     /* параметры монтирования */
               unsigned long  f_namemax;  /* максимальная длина имени файла */
           };

       Типы  fsblkcnt_t  и  fsfilcnt_t  определены  в  файле  <sys/types.h>.  Для  их определения
       используется тип unsigned long.

       Значение поля f_flag — битовая  маска  различных  параметров,  которые  были  указаны  при
       монтировании этой файловой системы. В нём содержится ноль или несколько следующих флагов:

       ST_MANDLOCK
              Разрешена обязательная (mandatory) блокировка файловой системы (смотрите fcntl(2)).

       ST_NOATIME
              Не обновлять времена доступа; смотрите mount(2).

       ST_NODEV
              Запретить доступ к специальным файлам устройств в этой файловой системе.

       ST_NODIRATIME
              Не обновлять времена доступа к каталогам; смотрите mount(2).

       ST_NOEXEC
              Исполнение программ в этой файловой системе запрещено.

       ST_NOSUID
              Биты  set-user-ID  и  set-group-ID  игнорируются в exec(3) для исполняемых файлов в
              этой файловой системе.

       ST_RDONLY
              Файловая система смонтирована в режиме только для чтения.

       ST_RELATIME
              Обновлять atime относительно mtime/ctime; смотрите mount(2).

       ST_SYNCHRONOUS
              Выполнять синхронную запись в файловую систему немедленно (смотрите описание O_SYNC
              в open(2)).

       Не  указывается,  будут  ли  при  любых  файловых  системах  членам возвращаемой структуры
       присвоены осмысленные данные.

       fstatvfs() возвращает такую же информацию об открытом файле через его ссылку на дескриптор
       fd.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On  success, zero is returned.  On error, -1 is returned, and errno is set to indicate the
       error.

ОШИБКИ

       EACCES (statvfs()) Нет права на поиск одного из компонентов префикса пути path (см.  также
              path_resolution(7)).

       EBADF  (fstatvfs()) fd не является корректным открытым дескриптором файла.

       EFAULT Buf или path указывает на неправильный адрес.

       EINTR  Данный вызов был прерван сигналом; смотрите signal(7).

       EIO    При чтении файловой системы произошла ошибка ввода-вывода.

       ELOOP  (statvfs()) Было обнаружено слишком много символьных ссылок при трансляции path.

       ENAMETOOLONG
              (statvfs()) Слишком длинное значение аргумента path.

       ENOENT (statvfs()) Файл, указанный в path, не существует.

       ENOMEM Недостаточное количество памяти ядра.

       ENOSYS Файловая система не поддерживает данный вызов.

       ENOTDIR
              (statvfs()) Один из компонентов префикса пути path не является каталогом.

       EOVERFLOW
              Некоторые  значения  слишком  велики,  чтобы  быть  представленными  в возвращаемой
              структуре.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌───────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ИнтерфейсАтрибутЗначение │
       ├───────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │statvfs(), fstatvfs()                                  │ Безвредность в нитях │ MT-Safe  │
       └───────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008.

       В POSIX.1 в поле f_flag определены только флаги  ST_NOSUID  и  ST_RDONLY.  Чтобы  получить
       определения остальных флагов нужно определить _GNU_SOURCE.

ЗАМЕЧАНИЯ

       Для  поддержки  данной библиотечной функции в ядре Linux есть системные вызовы statfs(2) и
       fstatfs(2).

       Before glibc 2.13, statvfs()  populated the bits of the f_flag field by scanning the mount
       options  shown  in  /proc/mounts.   However,  starting  with  Linux 2.6.36, the underlying
       statfs(2)  system call provides the necessary information via the f_flags field, and since
       glibc  2.13,  the  statvfs()   function  will  use information from that field rather than
       scanning /proc/mounts.

       Реализации функций в glibc

           pathconf(path, _PC_REC_XFER_ALIGN);
           pathconf(path, _PC_ALLOC_SIZE_MIN);
           pathconf(path, _PC_REC_MIN_XFER_SIZE);

       используют, соответственно,  поля  f_frsize,  f_frsize  и  f_bsize,  возвращаемые  вызовом
       statvfs() с аргументом path.

СМ. ТАКЖЕ

       statfs(2)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства   был   сделан   Alexander   Golubev
       <fatzer2@gmail.com>,  Azamat  Hackimov  <azamat.hackimov@gmail.com>,   Hotellook,   Nikita
       <zxcvbnm3230@mail.ru>,       Spiros       Georgaras       <sng@hellug.gr>,       Vladislav
       <ivladislavefimov@gmail.com>,   Yuri   Kozlov   <yuray@komyakino.ru>   и    Иван    Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.