.\" Copyright (C) 2003 Andries Brouwer (aeb@cwi.nl) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Modified 2003-08-17 by Walter Harms .\" Modified 2004-06-23 by Michael Kerrisk .\" .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya .\" all rights reserved. .\" Translated Fri Dec 12 00:25:54 JST 1997 .\" by HANATAKA Shinya .\" Updated & Modified Sat Jun 2 20:25:46 JST 2001 .\" by Yuichi SATO .\" Updated & Modified Sat Jan 18 16:48:08 JST 2003 .\" by Yuichi SATO .\" Updated & Modified Sun Sep 7 00:52:44 JST 2003 by Yuichi SATO .\" Updated & Modified Sun Jan 9 22:35:28 JST 2005 by Yuichi SATO .\" Updated 2006-07-21, Akihiro MOTOKI , LDP v2.36 .\" .\"WORD: file system ファイル・システム .\"WORD: mount マウント .\"WORD: pointer ポインター .\"WORD: descriptor ディスクリプター .\"WORD: open オープン .\"WORD: symbolic link シンボリック・リンク .\"WORD: open オープン .\" .TH STATFS 2 2004-06-23 "Linux" "Linux Programmer's Manual" .SH 名前 statfs, fstatfs \- ファイル・システムの統計を得る .SH 書式 .BR "#include " "/* または */" .sp .BI "int statfs(const char *" path ", struct statfs *" buf ); .br .BI "int fstatfs(int " fd ", struct statfs *" buf ); .SH 書式 関数 .BR statfs () はマウントされたファイル・システムについての情報を返す。 .I path はマウントされたファイル・システムにあるファイルのパス名である。 .I buf は .I statfs 構造体へのポインターで、およそ以下のように定義される: .in +4n .nf struct statfs { long f_type; /* ファイルシステムの型 (下記参照) */ long f_bsize; /* 最適なブロックサイズ */ long f_blocks; /* ファイルシステムの総データブロック数 */ long f_bfree; /* ファイルシステムの空きブロック数 */ long f_bavail; /* 非特権ユーザが使用可能な空きブロック数 */ long f_files; /* ファイルシステムの総ファイルノード数 */ long f_ffree; /* ファイルシステムの空きファイルノード数 */ fsid_t f_fsid; /* ファイルシステムの ID */ long f_namelen; /* ファイル名の最大長 */ }; ファイル・システムの型: ADFS_SUPER_MAGIC 0xadf5 AFFS_SUPER_MAGIC 0xADFF BEFS_SUPER_MAGIC 0x42465331 BFS_MAGIC 0x1BADFACE CIFS_MAGIC_NUMBER 0xFF534D42 CODA_SUPER_MAGIC 0x73757245 COH_SUPER_MAGIC 0x012FF7B7 CRAMFS_MAGIC 0x28cd3d45 DEVFS_SUPER_MAGIC 0x1373 EFS_SUPER_MAGIC 0x00414A53 EXT_SUPER_MAGIC 0x137D EXT2_OLD_SUPER_MAGIC 0xEF51 EXT2_SUPER_MAGIC 0xEF53 EXT3_SUPER_MAGIC 0xEF53 HFS_SUPER_MAGIC 0x4244 HPFS_SUPER_MAGIC 0xF995E849 HUGETLBFS_MAGIC 0x958458f6 ISOFS_SUPER_MAGIC 0x9660 JFFS2_SUPER_MAGIC 0x72b6 JFS_SUPER_MAGIC 0x3153464a MINIX_SUPER_MAGIC 0x137F /* オリジナルの minix */ MINIX_SUPER_MAGIC2 0x138F /* 30 文字ファイル名の minix */ MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */ MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 文字ファイル名 */ MSDOS_SUPER_MAGIC 0x4d44 NCP_SUPER_MAGIC 0x564c NFS_SUPER_MAGIC 0x6969 NTFS_SB_MAGIC 0x5346544e OPENPROM_SUPER_MAGIC 0x9fa1 PROC_SUPER_MAGIC 0x9fa0 QNX4_SUPER_MAGIC 0x002f REISERFS_SUPER_MAGIC 0x52654973 ROMFS_MAGIC 0x7275 SMB_SUPER_MAGIC 0x517B SYSV2_SUPER_MAGIC 0x012FF7B6 SYSV4_SUPER_MAGIC 0x012FF7B5 TMPFS_MAGIC 0x01021994 UDF_SUPER_MAGIC 0x15013346 UFS_MAGIC 0x00011954 USBDEVICE_SUPER_MAGIC 0x9fa2 VXFS_SUPER_MAGIC 0xa501FCF5 XENIX_SUPER_MAGIC 0x012FF7B4 XFS_SUPER_MAGIC 0x58465342 _XIAFS_SUPER_MAGIC 0x012FD16D .fi .in .PP .I f_fsid にどんな値が入るべきなのかは誰も知らない (但し、下記を参照)。 .PP それぞれのファイル・システムにおいて未定義のフィールドには 0 が 設定される。 .BR fstatfs () はディスクリプター .I fd によって参照されるオープンされたファイルについて、同じ情報を返す。 .SH 返り値 成功すれば 0 が返される。エラーの場合は \-1 が返され、 .I errno が適切に設定される。 .SH エラー .TP .B EACCES .RB ( statfs () の場合) .I path のディレクトリ部分に検索許可が与えられていない .RB ( path_resolution (7) も参照すること)。 .TP .B EBADF .RB ( fstatfs () の場合) .I fd は有効なオープンされたファイル・ディスクリプターではない。 .TP .B EFAULT .I buf または .I path が不正なアドレスを指している。 .TP .B EINTR この呼び出しがシグナルで中断された。 .TP .B EIO ファイル・システムの読み込みの間に I/O エラーが発生した。 .TP .B ELOOP .RB ( statfs () の場合) .I path を解決するのに辿るべきシンボリック・リンクが多すぎる。 .TP .B ENAMETOOLONG .RB ( statfs () の場合) .I path が長過ぎる。 .TP .B ENOENT .RB ( statfs () の場合) .I path によって参照されるファイルが存在しない。 .TP .B ENOMEM カーネルに十分なメモリがない。 .TP .B ENOSYS ファイル・システムがこの呼び出しをサポートしていない。 .TP .B ENOTDIR .RB ( statfs () の場合) .I path のディレクトリ部分がディレクトリでない。 .TP .B EOVERFLOW 値が大き過ぎるため、返り値の構造体で表現できない。 .SH 準拠 Linux 固有である。 Linux の .BR statfs () は 4.4BSD のものに影響を受けている。 (しかし同じ構造体を使用しているわけではない) .SH 注意 このライブラリコールをサポートするため、 カーネルにはシステムコール .BR statfs (), .BR fstatfs (), .BR statfs64 (), .BR fstatfs64 () がある。 \fI\fP しか持たないシステムもあり、 \fI\fP も持っているシステムもある。 前者は後者をインクルードするので、 前者をインクルードするのが良いと考えられる。 LSB ではライブラリコール .BR statfs (), .BR fstatfs () を非推奨として、代わりに .BR statvfs (2), .BR fstatvfs (2) を使うように指示している。 .SS f_fsid フィールド Solaris, Irix, POSIX にはシステムコール .BR statvfs (2) があり、 .I "struct statvfs" を返す .RI ( で定義されている)。 この構造体には、 .I "unsigned long" .I f_fsid が含まれている。 Linux, SunOS, HP-UX, 4.4BSD にはシステムコール .BR statfs () があり、 .I "struct statfs" を返す .RI ( で定義されている)。 この構造体には .I fsid_t .IR f_fsid , が含まれており、 .I fsid_t は .I "struct { int val[2]; }" と定義されている。 FreeBSD でも同じであるが、インクルードファイル .I を使う。 .I f_fsid はあるランダムな値を持ち、 .RI ( f_fsid , ino ) という 1 組の値でファイルを一意に決定できるようにする、 というのが基本的な考え方である。 いくつかの OS では、デバイス番号 (の変種) を使ったり、 デバイス番号とファイル・システムタイプを組み合わせて使ったりしている。 OS の中には .I f_fsid フィールドの取得をスーパーユーザに限定しているものもある (非特権ユーザが取得すると 0 となる)。 NFS でエクスポートされる場合、 このフィールドがファイル・システムのファイルハンドルで使われており、 この値を提供するとセキュリティ上の問題がある。 .LP いくつかの OS では、 .I fsid を .BR sysfs () システムコールの第 2 引き数として使用できる。 .SH 関連項目 .BR stat (2), .BR statvfs (2), .BR path_resolution (7)