GETFSSTAT(2)

名称
getfsstat - マウントされたすべてのファイルシステムのリストを得る

ライブラリ
libc

書式
<sys/param.h> <sys/ucred.h> <sys/mount.h> int getfsstat(struct statfs *buf, long bufsize, int flags)

解説
getfsstat() システムコールは、マウントされたすべてのファイルシステムに関する情報を 返します。 buf 引数は 次のように定義される statfs 構造体へのポインタです。

    typedef struct fsid { int32_t val[2]; } fsid_t;	/* ファイルシステム ID タイプ */
    /*
     * ファイルシステム統計
     */
    #define MFSNAMELEN 16	/* ファイルシステムのタイプ名長、ヌルを含む */
    #define MNAMELEN   90	/* 返された名前についてのバッファの長さ */
    struct statfs {
        long    f_spare2;		/* プレースホルダ */
        long    f_bsize;		/* 基本的なファイルシステムのブロックサイズ */
        long    f_iosize;		/* 最適な転送ブロックサイズ */
        long    f_blocks;		/* ファイルシステム内の合計データブロック */
        long    f_bfree;		/* ファイルシステム内の未使用のブロック */
        long    f_bavail;		/* スーパユーザ以外のユーザが利用できる未使用のブロック */
        long    f_files;		/* ファイルシステム内の合計ファイルノード */
        long    f_ffree;		/* ファイルシステム内の未使用のファイルノード */
        fsid_t  f_fsid;		/* ファイルシステム ID */
        uid_t   f_owner;		/* ファイルシステムをマウントしたユーザ */
        int     f_type;		/* ファイルシステムのタイプ (下記を参照) */
        int     f_flags;		/* マウントフラグのコピー */
        long    f_spare[2];		/* 後のための余白 */
        char    f_fstypename[MFSNAMELEN];/* ファイルシステムのタイプ名 */
        char    f_mntonname[MNAMELEN];/* マウントされたディレクトリ */
        char    f_mntfromname[MNAMELEN];/* マウントされたファイルシステム */
    };

返される可能性のあるフラグには次のものが含まれます。

MNT_RDONLY
    ファイルシステムは読取り専用としてマウントされています。 スーパユーザも書き込むことはできません。

MNT_NOEXEC
    そのファイルシステム上のファイルを実行することはできません。

MNT_NOSUID
    実行されるときに、ファイルの setuid ビットと setgid ビットが 効果を持ちません。

MNT_NODEV
    ファイルシステム内の特殊ファイルは開けません。

MNT_SYNCHRONOUS
    ファイルシステムへのすべての入出力が同期的に実行されます。

MNT_ASYNCHRONOUS
    ファイルシステム入出力が同期的に実行されません。

MNT_LOCAL
    ローカルにあるファイルシステムです。

MNT_QUOTA
    ファイルシステム上でクオータが有効になっています。

MNT_ROOTFS
    ルートファイルシステムであることを示します。

MNT_EXRDONLY
    ファイルシステムは読取り専用でエクスポートされています。

MNT_EXPORTED
    ファイルシステムは読取りと書込みの両方についてエクスポートされています。

MNT_DEFEXPORTED
    ファイルシステムはどのインターネットホストへも読取りと書込みの両方について エクスポートされています。

MNT_EXPORTANON
    ファイルシステムはすべてのリモートアクセスを匿名ユーザへマップします。

MNT_EXKERB
    ファイルシステムは Kerberos uid マッピングでエクスポートされています。

特定のファイルシステムについて未定義となるフィールドは -1 に設定されます。 バッファは fsstat 構造体の配列で埋められます。 マウントされた各ファイルシステムについて 1 つずつ、最高 bufsize で指定されたサイズまでです。

buf として NULL が指定されている場合、 getfsstat() はマウントされているファイルシステムの数のみを返します。

通常、 flags には MNT_WAIT を指定するべきです。 flags として MNT_NOWAIT が指定されている場合、 getfsstat() は各ファイルシステムからの更新を要求せずに利用できる情報を返します。 そのため、情報のうちには古くなっているものがあるでしょうが、 getfsstat() は応答できないファイルシステムからの情報を 待機してブロックすることはありません。

戻り値
正常に完了すると fsstat 構造体の数が返されます。 そうでない場合は -1 が返され、エラーを示すためにグローバル変数 errno が設定されます。

エラー
getfsstat() システムコールは以下の 1 つでも真の場合、処理に失敗します:

[EFAULT]
    buf 引数が無効なアドレスを指しています。

[EIO]
    ファイルシステムを読み書きしている間に I/O (入出力) エラーが発生しました。

関連項目
statfs(2), fstab(5), mount(8)

歴史
getfsstat() システムコールは 4.4BSD ではじめて登場しました。