Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
statvfs, fstatvfs - ファイルシステムの統計を取得する
書式
#include <sys/statvfs.h> int statvfs(const char *path, struct statvfs *buf); int fstatvfs(int fd, struct statvfs *buf);
説明
関数 statvfs() はマウントされたファイルシステムについての情報を返す。 path はマウントされ たファイルシステム中の任意のファイルのパス名である。 buf は、だいたい以下のように定義され ている statvfs 構造体へのポインターである: struct statvfs { unsigned long f_bsize; /* Filesystem block size */ unsigned long f_frsize; /* Fragment size */ fsblkcnt_t f_blocks; /* Size of fs in f_frsize units */ fsblkcnt_t f_bfree; /* Number of free blocks */ fsblkcnt_t f_bavail; /* Number of free blocks for unprivileged users */ fsfilcnt_t f_files; /* Number of inodes */ fsfilcnt_t f_ffree; /* Number of free inodes */ fsfilcnt_t f_favail; /* Number of free inodes for unprivileged users */ unsigned long f_fsid; /* Filesystem ID */ unsigned long f_flag; /* Mount flags */ unsigned long f_namemax; /* Maximum filename length */ }; ここで、型 fsblkcnt_t と fsfilcnt_t は <sys/types.h> で定義されている。 かつて、これらは共 に unsigned long であった。 The field f_flag is a bit mask indicating various options that were employed when mounting this filesystem. It contains zero or more of the following flags: ST_MANDLOCK Mandatory locking is permitted on the filesystem (see fcntl(2)). ST_NOATIME Do not update access times; see mount(2). ST_NODEV Disallow access to device special files on this filesystem. ST_NODIRATIME Do not update directory access times; see mount(2). ST_NOEXEC Execution of programs is disallowed on this filesystem. ST_NOSUID The set-user-ID and set-group-ID bits are ignored by exec(3) for executable files on this filesystem ST_RDONLY This filesystem is mounted read-only. ST_RELATIME Update atime relative to mtime/ctime; see mount(2). ST_SYNCHRONOUS Writes are synched to the filesystem immediately (see the description of O_SYNC in open(2)). 返された構造体の全てのメンバが全てのファイルシステムで 意味のある値であるか否かは、指定さ れていない。 fstatvfs() は、ディスクリプター fd で参照されるオープンされたファイルについて、同じ情報を 返す。
返り値
成功した場合、0 が返される。 失敗した場合、 -1 が返され、 errno に適切な値がセットされる。
エラー
EACCES (statvfs() の場合) path のディレクトリ部分に検索許可が与えられていない (path_resolution(7) も参照すること)。 EBADF (fstatvfs() の場合) fd が有効なオープンファイルディスクリプターではない。 EFAULT buf または path が無効なアドレスを指している。 EINTR この呼び出しがシグナルで中断された。 signal(7) 参照。 EIO ファイルシステムからの読み込みの間に I/O エラーが発生した。 ELOOP (statvfs() の場合) path にシンボリックリンクが多すぎる。 ENAMETOOLONG (statvfs() の場合) path が長すぎる。 ENOENT (statvfs() の場合) path で参照されるファイルが存在しない。 ENOMEM 十分なカーネルメモリーがない。 ENOSYS ファイルシステムがこの呼び出しをサポートしていない。 ENOTDIR (statvfs() の場合) path のディレクトリ部分がディレクトリでない。 EOVERFLOW いくつかの値が大き過ぎて、返り値の構造体で表現できない。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。 ┌──────────────────────┬───────────────┬─────────┐ │インターフェース │ 属性 │ 値 │ ├──────────────────────┼───────────────┼─────────┤ │statvfs(), fstatvfs() │ Thread safety │ MT-Safe │ └──────────────────────┴───────────────┴─────────┘
準拠
POSIX.1-2001, POSIX.1-2008. Only the ST_NOSUID and ST_RDONLY flags of the f_flag field are specified in POSIX.1. To obtain definitions of the remaining flags, one must define _GNU_SOURCE.
注意
Linux カーネルには、このライブラリコールをサポートするために、 statfs(2), fstatfs(2) シス テムコールがある。 In glibc versions before 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 version 2.13, the statvfs() function will use information from that field rather than scanning /proc/mounts. The glibc implementations of pathconf(path, _PC_REC_XFER_ALIGN); pathconf(path, _PC_ALLOC_SIZE_MIN); pathconf(path, _PC_REC_MIN_XFER_SIZE); respectively use the f_frsize, f_frsize, and f_bsize fields returned by a call to statvfs() with the argument path.
関連項目
statfs(2)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。