Unix-system-calls-fstatfs

提供:Dev Guides
移動先:案内検索

[top]#

|http://www.google.com/[Google] | a|

Web This Site
  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

[cols=",,,,,,,",]

| |  Home   | |  References   | |  Discussion Forums   | |  About TP  

[width="100%",cols="100%",]

a| == statfs()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

statfs、fstatfs-ファイルシステムの統計情報を取得する

概要

#include <sys/vfs.h> /*or <sys/statfs.h>*/ int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct statfs *buf);

説明

関数 statfs ()は、マウントされたファイルシステムに関する情報を返します。 _path_は、マウントされたファイルシステム内のファイルのパス名です。 _buf_は、おおよそ次のように定義された_statfs_構造体へのポインターです。

struct statfs { long f_type; /*type of filesystem (see below)*/ long f_bsize; /*optimal transfer block size*/ long f_blocks; /*total data blocks in file system*/ long f_bfree; /*free blocks in fs*/ long f_bavail; /*free blocks avail to non-superuser*/ long f_files; /*total file nodes in file system*/ long f_ffree; /*free file nodes in fs*/ fsid_t f_fsid; /*file system id*/ long f_namelen; /*maximum length of filenames*/ };

ファイルシステムタイプ:

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/*orig. minix*/ MINIX_SUPER_MAGIC2 0x138F/*30 char minix*/ MINIX2_SUPER_MAGIC 0x2468/*minix V2*/ MINIX2_SUPER_MAGIC2 0x2478/*minix V2, 30 char names*/ 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

_f_fsid_に何が含まれているのかは誰にもわかりません(ただし、以下を参照してください)。

特定のファイルシステムに対して未定義のフィールドは0に設定されます。 fstatfs ()は、記述子_fd_によって参照されるオープンファイルに関する同じ情報を返します。

返り値

成功すると、ゼロが返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

Error Code Description
EACCES (statfs()) Search permission is denied for a component of the path prefix of path. (See also path_resolution(2).)
EBADF (fstatfs()) fd is not a valid open file descriptor.
EFAULT buf or path points to an invalid address.
EINTR This call was interrupted by a signal.
EIO An I/O error occurred while reading from the file system.
ELOOP (statfs()) Too many symbolic links were encountered in translating path.
ENAMETOOLONG (statfs()) path is too long.
ENOENT (statfs()) The file referred to by path does not exist.
ENOMEM Insufficient kernel memory was available.
ENOSYS The file system does not support this call.
ENOTDIR (statfs()) A component of the path prefix of path is not a directory.
*EOVERFLOW * Some values were too large to be represented in the returned struct.

準拠

Linux* statfs *()は4.4BSDに触発されました(ただし、同じ構造を使用していません)。

ノート

カーネルには、このライブラリー呼び出しをサポートするためのシステム呼び出し statfs ()、 fstatfs ()、 statfs64 ()、および fstatfs64 ()があります。

一部のシステムには<sys/vfs.h>しかありませんが、他のシステムには<sys/statfs.h>があります。前者には後者が含まれています。 したがって、前者を含めることが最良の選択であると思われます。

LSBは、ライブラリ呼び出し statfs ()および fstatfs ()を廃止し、代わりに statvfs ()および fstatvfs ()を使用するよう指示しています。

f_fsidフィールド

Solaris、Irix、およびPOSIXには、unsigned long f_fsid_を含むastruct statvfs <sys/statvfs.h> で定義)を返すシステムコール* statvfs (2)があります。 Linux、SunOS、HP-UX、4.4BSDには、_fsid_t f_fsid_を含む_struct statfs(_ <sys/vfs.h> で定義)を返すシステムコール *statfs ()があります。ここで、_fsid_t_は_struct \ { int val [2]; } _。 同じことがFreeBSDにも当てはまりますが、インクルードファイル <sys/mount.h> _が使用されます。

一般的な考え方は、f_fsid_にはランダムなものが含まれており、ペア(_f_fsid _、 ino_)がファイルを一意に決定するというものです。 一部のOSは、デバイス番号、またはファイルシステムタイプと組み合わせたデバイス番号を使用します(バリエーション)。 いくつかのOSは、_f_fsid_フィールドをスーパーユーザーのみに与えることを制限しています(そして、非特権ユーザーにはゼロにします)。このフィールドは、NFSエクスポート時にファイルシステムのファイルハンドルで使用され、それを与えることはセキュリティ上の懸念です。

一部のOSでは、b> sysfs()システムコールの2番目のパラメータとして_fsid_を使用できます。

関連項目

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

|  

[cols="^",]

|Advertisements