.\" Updated & Modified Sun Jan 9 22:35:28 JST 2005 by Yuichi SATO
.\" Updated 2006-07-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
.\"
-.\"WORD: file system ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à
-.\"WORD: mount ¥Þ¥¦¥ó¥È
-.\"WORD: pointer ¥Ý¥¤¥ó¥¿¡¼
-.\"WORD: descriptor ¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼
-.\"WORD: open ¥ª¡¼¥×¥ó
-.\"WORD: symbolic link ¥·¥ó¥Ü¥ê¥Ã¥¯¡¦¥ê¥ó¥¯
-.\"WORD: open ¥ª¡¼¥×¥ó
+.\"WORD: file system ファイル・システム
+.\"WORD: mount マウント
+.\"WORD: pointer ã\83\9dã\82¤ã\83³ã\82¿ã\83¼
+.\"WORD: descriptor ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼
+.\"WORD: open オープン
+.\"WORD: symbolic link ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯
+.\"WORD: open オープン
.\"
.TH STATFS 2 2010-09-04 "Linux" "Linux Programmer's Manual"
-.SH ̾Á°
-statfs, fstatfs \- ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ÎÅý·×¤òÆÀ¤ë
-.SH ½ñ¼°
-.BR "#include <sys/vfs.h> " "/* ¤Þ¤¿¤Ï <sys/statfs.h> */"
+.SH 名前
+statfs, fstatfs \- ファイル・システムの統計を得る
+.SH 書式
+.BR "#include <sys/vfs.h> " "/* または <sys/statfs.h> */"
.sp
.BI "int statfs(const char *" path ", struct statfs *" buf );
.br
.BI "int fstatfs(int " fd ", struct statfs *" buf );
-.SH ½ñ¼°
-´Ø¿ô
+.SH 書式
+関数
.BR statfs ()
-¤Ï¥Þ¥¦¥ó¥È¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÊÖ¤¹¡£
+はマウントされたファイル・システムについての情報を返す。
.I path
-¤Ï¥Þ¥¦¥ó¥È¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹Ì¾¤Ç¤¢¤ë¡£
+はマウントされたファイル・システムにあるファイルのパス名である。
.I buf
-¤Ï
+は
.I statfs
-¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¡¼¤Ç¡¢¤ª¤è¤½°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:
+構造体へのポインターで、およそ以下のように定義される:
.in +4n
.nf
-#if __WORDSIZE == 32 /* ¥·¥¹¥Æ¥à¤Î¥ï¡¼¥É¥µ¥¤¥º */
+#if __WORDSIZE == 32 /* ã\82·ã\82¹ã\83\86ã\83 ã\81®ã\83¯ã\83¼ã\83\89ã\82µã\82¤ã\82º */
# define __SWORD_TYPE int
#else /* __WORDSIZE == 64 */
# define __SWORD_TYPE long int
#endif
struct statfs {
- __SWORD_TYPE f_type; /* ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÊÌ (²¼µ»²¾È) */
- __SWORD_TYPE f_bsize; /* ºÇŬ¤ÊžÁ÷¥Ö¥í¥Ã¥¯¥µ¥¤¥º */
- fsblkcnt_t f_blocks; /* ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÁí¥Ç¡¼¥¿¥Ö¥í¥Ã¥¯¿ô */
- fsblkcnt_t f_bfree; /* ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¶õ¤¥Ö¥í¥Ã¥¯¿ô */
- fsblkcnt_t f_bavail; /* ÈóÆø¢¥æ¡¼¥¶¤¬ÍøÍѲÄǽ¤Ê¶õ¤¥Ö¥í¥Ã¥¯¿ô */
- fsfilcnt_t f_files; /* ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÁí¥Õ¥¡¥¤¥ë¥Î¡¼¥É¿ô */
- fsfilcnt_t f_ffree; /* ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¶õ¤¥Õ¥¡¥¤¥ë¥Î¡¼¥É¿ô */
- fsid_t f_fsid; /* ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î ID */
- __SWORD_TYPE f_namelen; /* ¥Õ¥¡¥¤¥ë̾¤ÎºÇÂçĹ */
- __SWORD_TYPE f_frsize; /* ¥Õ¥é¥°¥á¥ó¥È¥µ¥¤¥º (Linux 2.6 °Ê¹ß) */
+ __SWORD_TYPE f_type; /* ファイルシステムの種別 (下記参照) */
+ __SWORD_TYPE f_bsize; /* æ\9c\80é\81©ã\81ªè»¢é\80\81ã\83\96ã\83ã\83\83ã\82¯ã\82µã\82¤ã\82º */
+ fsblkcnt_t f_blocks; /* ファイルシステムの総データブロック数 */
+ fsblkcnt_t f_bfree; /* ファイルシステムの空きブロック数 */
+ fsblkcnt_t f_bavail; /* 非特権ユーザが利用可能な空きブロック数 */
+ fsfilcnt_t f_files; /* ファイルシステムの総ファイルノード数 */
+ fsfilcnt_t f_ffree; /* ファイルシステムの空きファイルノード数 */
+ fsid_t f_fsid; /* ファイルシステムの ID */
+ __SWORD_TYPE f_namelen; /* ファイル名の最大長 */
+ __SWORD_TYPE f_frsize; /* フラグメントサイズ (Linux 2.6 以降) */
__SWORD_TYPE f_spare[5];
};
-¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î·¿:
+ファイル・システムの型:
ADFS_SUPER_MAGIC 0xadf5
AFFS_SUPER_MAGIC 0xADFF
ISOFS_SUPER_MAGIC 0x9660
JFFS2_SUPER_MAGIC 0x72b6
JFS_SUPER_MAGIC 0x3153464a
- MINIX_SUPER_MAGIC 0x137F /* ¥ª¥ê¥¸¥Ê¥ë¤Î minix */
- MINIX_SUPER_MAGIC2 0x138F /* 30 ʸ»ú¥Õ¥¡¥¤¥ë̾¤Î minix */
+ MINIX_SUPER_MAGIC 0x137F /* オリジナルの minix */
+ MINIX_SUPER_MAGIC2 0x138F /* 30 文字ファイル名の minix */
MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */
- MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 ʸ»ú¥Õ¥¡¥¤¥ë̾ */
+ MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 文字ファイル名 */
MSDOS_SUPER_MAGIC 0x4d44
NCP_SUPER_MAGIC 0x564c
NFS_SUPER_MAGIC 0x6969
.in
.PP
.I f_fsid
-¤Ë¤É¤ó¤ÊÃͤ¬Æþ¤ë¤Ù¤¤Ê¤Î¤«¤Ïï¤âÃΤé¤Ê¤¤ (⤷¡¢²¼µ¤ò»²¾È)¡£
+にどんな値が入るべきなのかは誰も知らない (但し、下記を参照)。
.PP
-¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë¤ª¤¤¤Æ̤ÄêµÁ¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤Ï 0 ¤¬
-ÀßÄꤵ¤ì¤ë¡£
+それぞれのファイル・システムにおいて未定義のフィールドには 0 が
+設定される。
.BR fstatfs ()
-¤Ï¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼
+ã\81¯ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼
.I fd
-¤Ë¤è¤Ã¤Æ»²¾È¤µ¤ì¤ë¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¡¢Æ±¤¸¾ðÊó¤òÊÖ¤¹¡£
-.SH ÊÖ¤êÃÍ
-À®¸ù¤¹¤ì¤Ð 0 ¤¬ÊÖ¤µ¤ì¤ë¡£¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤¬ÊÖ¤µ¤ì¡¢
+によって参照されるオープンされたファイルについて、同じ情報を返す。
+.SH 返り値
+成功すれば 0 が返される。エラーの場合は \-1 が返され、
.I errno
-¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¤ë¡£
-.SH ¥¨¥é¡¼
+が適切に設定される。
+.SH ã\82¨ã\83©ã\83¼
.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 ¥¨¥é¡¼¤¬È¯À¸¤·¤¿¡£
+ファイル・システムの読み込みの間に 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 ¤Î
+値が大き過ぎるため、返り値の構造体で表現できない。
+.SH 準拠
+Linux 固有である。
+Linux の
.BR statfs ()
-¤Ï 4.4BSD ¤Î¤â¤Î¤Ë±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£
-(¤·¤«¤·Æ±¤¸¹½Â¤ÂΤò»ÈÍѤ·¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤)
-.SH Ãí°Õ
-¤³¤Î¥é¥¤¥Ö¥é¥ê¥³¡¼¥ë¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¡¢
-¥«¡¼¥Í¥ë¤Ë¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë
+は 4.4BSD のものに影響を受けている。
+(しかし同じ構造体を使用しているわけではない)
+.SH 注意
+このライブラリコールをサポートするため、
+カーネルにはシステムコール
.BR statfs (),
.BR fstatfs (),
.BR statfs64 (),
.BR fstatfs64 ()
-¤¬¤¢¤ë¡£
+がある。
-\fI<sys/vfs.h>\fP ¤·¤«»ý¤¿¤Ê¤¤¥·¥¹¥Æ¥à¤â¤¢¤ê¡¢
-\fI<sys/statfs.h>\fP ¤â»ý¤Ã¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤â¤¢¤ë¡£
-Á°¼Ô¤Ï¸å¼Ô¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤Î¤Ç¡¢
-Á°¼Ô¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤Î¤¬Îɤ¤¤È¹Í¤¨¤é¤ì¤ë¡£
+\fI<sys/vfs.h>\fP しか持たないシステムもあり、
+\fI<sys/statfs.h>\fP も持っているシステムもある。
+前者は後者をインクルードするので、
+前者をインクルードするのが良いと考えられる。
-LSB ¤Ç¤Ï¥é¥¤¥Ö¥é¥ê¥³¡¼¥ë
+LSB ではライブラリコール
.BR statfs (),
.BR fstatfs ()
-¤òÈó¿ä¾©¤È¤·¤Æ¡¢Âå¤ï¤ê¤Ë
+を非推奨として、代わりに
.BR statvfs (2),
.BR fstatvfs (2)
-¤ò»È¤¦¤è¤¦¤Ë»Ø¼¨¤·¤Æ¤¤¤ë¡£
-.SS f_fsid ¥Õ¥£¡¼¥ë¥É
-Solaris, Irix, POSIX ¤Ë¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë
+を使うように指示している。
+.SS f_fsid フィールド
+Solaris, Irix, POSIX にはシステムコール
.BR statvfs (2)
-¤¬¤¢¤ê¡¢
+があり、
.I "struct statvfs"
-¤òÊÖ¤¹
+を返す
.RI ( <sys/statvfs.h>
-¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë)¡£
-¤³¤Î¹½Â¤ÂΤˤϡ¢
+で定義されている)。
+この構造体には、
.I "unsigned long"
.I f_fsid
-¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£
-Linux, SunOS, HP-UX, 4.4BSD ¤Ë¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë
+が含まれている。
+Linux, SunOS, HP-UX, 4.4BSD にはシステムコール
.BR statfs ()
-¤¬¤¢¤ê¡¢
+があり、
.I "struct statfs"
-¤òÊÖ¤¹
+を返す
.RI ( <sys/vfs.h>
-¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë)¡£
-¤³¤Î¹½Â¤ÂΤˤÏ
+で定義されている)。
+この構造体には
.I fsid_t
.IR f_fsid ,
-¤¬´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢
+が含まれており、
.I fsid_t
-¤Ï
+は
.I "struct { int val[2]; }"
-¤ÈÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-FreeBSD ¤Ç¤âƱ¤¸¤Ç¤¢¤ë¤¬¡¢¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë
+と定義されている。
+FreeBSD でも同じであるが、インクルードファイル
.I <sys/mount.h>
-¤ò»È¤¦¡£
+を使う。
.I f_fsid
-¤Ï¤¢¤ë¥é¥ó¥À¥à¤ÊÃͤò»ý¤Á¡¢
+はあるランダムな値を持ち、
.RI ( f_fsid , ino )
-¤È¤¤¤¦ 1 ÁȤÎÃͤǥե¡¥¤¥ë¤ò°ì°Õ¤Ë·èÄê¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¡¢
-¤È¤¤¤¦¤Î¤¬´ðËÜŪ¤Ê¹Í¤¨Êý¤Ç¤¢¤ë¡£
-¤¤¤¯¤Ä¤«¤Î OS ¤Ç¤Ï¡¢¥Ç¥Ð¥¤¥¹ÈÖ¹æ (¤ÎÊѼï) ¤ò»È¤Ã¤¿¤ê¡¢
-¥Ç¥Ð¥¤¥¹ÈÖ¹æ¤È¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¥¿¥¤¥×¤òÁȤ߹ç¤ï¤»¤Æ»È¤Ã¤¿¤ê¤·¤Æ¤¤¤ë¡£
-OS ¤ÎÃæ¤Ë¤Ï
+という 1 組の値でファイルを一意に決定できるようにする、
+というのが基本的な考え方である。
+いくつかの OS では、デバイス番号 (の変種) を使ったり、
+デバイス番号とファイル・システムタイプを組み合わせて使ったりしている。
+OS の中には
.I f_fsid
-¥Õ¥£¡¼¥ë¥É¤Î¼èÆÀ¤ò¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¤Ë¸ÂÄꤷ¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ë
-(ÈóÆø¢¥æ¡¼¥¶¤¬¼èÆÀ¤¹¤ë¤È 0 ¤È¤Ê¤ë)¡£
-NFS ¤Ç¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤ë¾ì¹ç¡¢
-¤³¤Î¥Õ¥£¡¼¥ë¥É¤¬¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ç»È¤ï¤ì¤Æ¤ª¤ê¡¢
-¤³¤ÎÃͤòÄ󶡤¹¤ë¤È¥»¥¥å¥ê¥Æ¥£¾å¤ÎÌäÂ꤬¤¢¤ë¡£
+フィールドの取得をスーパーユーザに限定しているものもある
+(非特権ユーザが取得すると 0 となる)。
+NFS でエクスポートされる場合、
+このフィールドがファイル・システムのファイルハンドルで使われており、
+この値を提供するとセキュリティ上の問題がある。
.LP
-¤¤¤¯¤Ä¤«¤Î OS ¤Ç¤Ï¡¢
+いくつかの OS では、
.I fsid
-¤ò
+を
.BR sysfs (2)
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÂè 2 °ú¤¿ô¤È¤·¤Æ»ÈÍѤǤ¤ë¡£
-.SH ´ØÏ¢¹àÌÜ
+システムコールの第 2 引き数として使用できる。
+.SH 関連項目
.BR stat (2),
.BR statvfs (2),
.BR path_resolution (7)