名 前
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; /* フ ァ イ
ル シ ス テ ム の
ブ ロ ッ ク サ イ
ズ */
unsigned long f_frsize; /* フ ラ グ
メ ン ト サ イ ズ */
fsblkcnt_t f_blocks; /* フ ァ イ ル
シ ス テ ム の サ
イ ズ (f_frsize 単 位 ) */
fsblkcnt_t f_bfree; /* 解 放 さ れ
て い る ブ ロ ッ
ク 数 */
fsblkcnt_t f_bafvail; /* 非 特 権 ユ
ー ザ ー 用 に 解
放 さ れ て い る
ブ ロ ッ ク 数 */
fsfilcnt_t f_files; /* inode 数 */
fsfilcnt_t f_ffree; /* 解 放 さ れ
て い る inode の 数 */
fsfilcnt_t f_favail; /* 非 特 権 ユ
ー ザ ー 用 に 解
放 さ れ て い る inode
の 数 */
unsigned long f_fsid; /* フ ァ イ ル
シ ス テ ム ID */
unsigned long f_flag; /* マ ウ ン ト
フ ラ グ */
unsigned long f_namemax; /* フ ァ イ
ル 名 の 長 さ の
最 大 値 */ }; こ こ で
、 型 fsblkcnt_t と
fsfilcnt_t は <sys/types.h>
で 定 義 さ れ て
い る 。 か つ て
、 こ れ ら は 共
に unsigned long で あ っ
た 。 フ ィ ー ル
ド f_flag は (マ ウ ン
ト フ ラ グ の ) ビ
ッ ト マ ス ク で
あ る (マ ウ ン ト
フ ラ グ に つ い
て は 、 mount(8) を 参
照 す る こ と )。 POSIX
で 定 義 さ れ て
い る ビ ッ ト は
以 下 の 通 り :
ST_RDONLY 読
み 込 み 専 用 の
フ ァ イ ル シ ス
テ ム 。
ST_NOSUID
exec(3) に 無 視 さ れ る set−user−id/set−group−ID ビ ッ ト 。 返 さ れ た 構 造 体 の 全 て の メ ン バ が 全 て の フ ァ イ ル シ ス テ ム で 意 味 の あ る 値 で あ る か 否 か は 、 指 定 さ れ て い な い 。
fstatvfs() は 、 デ ィ ス ク リ プ タ ー fd で 参 照 さ れ る オ ー プ ン さ れ た フ ァ イ ル に つ い て 、 同 じ 情 報 を 返 す 。
返 り 値
成 功 し た 場 合 、 0 が 返 さ れ る 。 失 敗 し た 場 合 、 −1 が 返 さ れ 、 errno に 適 切 な 値 が セ ッ ト さ れ る 。
エ ラ ー
EACCES |
(statvfs() の 場 合 ) path の デ ィ レ ク ト リ 部 分 に 検 索 許 可 が 与 え ら れ て い な い (path_resolution(7) も 参 照 す る こ と )。 | ||
EBADF |
(fstatvfs() の 場 合 ) fd が 有 効 な オ ー プ ン フ ァ イ ル デ ィ ス ク リ プ タ ー で は な い 。 | ||
EFAULT |
buf ま た は path が 無 効 な ア ド レ ス を 指 し て い る 。 | ||
EINTR |
こ の 呼 び 出 し が シ グ ナ ル で 中 断 さ れ た 。
EIO フ ァ イ ル シ ス テ ム か ら の 読 み 込 み の 間 に |
I/O エ ラ ー が 発 生 し た 。 | ||
ELOOP |
(statvfs() の 場 合 ) path に シ ン ボ リ ッ ク リ ン ク が 多 す ぎ る 。
ENAMETOOLONG
(statvfs() の 場 合 ) path が 長 す ぎ る 。
ENOENT |
(statvfs() の 場 合 ) path で 参 照 さ れ る フ ァ イ ル が 存 在 し な い 。 | ||
ENOMEM |
十 分 な カ ー ネ ル メ モ リ ー が な い 。
ENOSYS フ ァ イ ル シ ス テ ム が こ の 呼 び 出 し を サ ポ ー ト し て い な い 。 |
ENOTDIR
(statvfs() の 場 合 ) path の デ ィ レ ク ト リ 部 分 が デ ィ レ ク ト リ で な い 。
EOVERFLOW い く つ か の 値 が 大 き 過 ぎ て 、 返 り 値 の 構 造 体 で 表 現 で き な い 。
属 性
マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 ) 関 数 statvfs() と fstatvfs()は ス レ ッ ド セ ー フ で あ る 。
準 拠
POSIX.1−2001.
注 意
Linux カ ー ネ ル に は 、 こ の ラ イ ブ ラ リ コ ー ル を サ ポ ー ト す る た め に 、 statfs(2), fstatfs(2) シ ス テ ム コ ー ル が あ る 。 現 在 の glibc の 実 装 に お い て 、
pathconf(path,
_PC_REC_XFER_ALIGN);
pathconf(path, _PC_ALLOC_SIZE_MIN);
pathconf(path, _PC_REC_MIN_XFER_SIZE); は 、
そ れ ぞ れ statvfs(path,buf)
の 返 り 値 の
f_frsize, f_frsize, f_bsize フ
ィ ー ル ド を 使
う 。
関 連 項 目
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。