getfsent - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
getfsent, getfsspec, getfsfile, setfsent, endfsent - fstab エントリの処理
書式
#include <fstab.h>
void endfsent(void);
struct fstab *getfsent(void);
struct fstab *getfsfile(const char *
mount_point
);
struct fstab *getfsspec(const char *
special_file
);
int setfsent(void);
説明
これらの関数は /etc/fstab ファイルから情報を読み込む。fstab 構造体は次のように定義されている。
struct fstab { char *fs_spec; /* block device name */ char *fs_file; /* mount point */ char *fs_vfstype; /* filesystem type */ char *fs_mntops; /* mount options */ const char *fs_type; /* rw/rq/ro/sw/xx option */ int fs_freq; /* dump frequency, in days */ int fs_passno; /* pass number on parallel dump */ };
*BSD システムの場合、
fs_type
フィールドには、5 つの文字列
"rw", "rq", "ro", "sw", "xx"
のいずれかが入る
(それぞれ read-write, quota 付き read-write, read-only, swap, ignore)。
関数
setfsent
()は呼び出されると fstab ファイルをオープンし、
最初の行に移動する。
関数 getfsent ()は fstab ファイルから次の行をパースする (必要な場合はファイルをオープンする)。
関数 endfsent ()は呼び出されると fstab ファイルをクローズする。
関数 getfsspec ()は fstab ファイルを先頭から検索し、 fs_spec フィールドが special_file 引数にマッチするエントリが見つかったら、その最初のものを返す。
関数 getfsfile ()は fstab ファイルを先頭から検索し、 fs_file フィールドが mount_point 引数にマッチするエントリが見つかったら、その最初のものを返す。
返り値
成功すると、 getfsent (), getfsfile (), getfsspec ()の各関数は fstab 構造体へのポインタを返し、 setfsent ()関数は 1 を返す。 失敗するとこれらの関数は NULL を返し、 end-of-file になったら 0 を返す。
履歴
getfsent ()関数は 4.0BSD で登場した。 他の 4 つの関数は 4.3BSD で登場した。
準拠
POSIX.1-2001 にはこれらの関数は存在しない。 これらの関数をもつ OS はいくつかあり、 *BSD, SunOS, Digital Unix, AIX 等である (AIX には getfstype ()もある)。 HP-UX にも同名の関数群があるが、 HP-UX のものは fstab 構造体ではなく checklist 構造体を用いる。 またこれらの関数の呼び出しは obsolete で、 getmntent (3) に取って代わられている。
注意
これらの関数はスレッドセーフではない。
Linux ではブロックスペシャルデバイスを複数の場所にマウントでき、 また複数のデバイスが同じマウントポイントを共有できる (この場合はそのマウントポイントに最後にマウントされたデバイスが意味を持つ) が、 getfsfile ()と getfsspec ()はマッチした最初のエントリしか返さないので、 これらの 2 つの関数は Linux での利用には適していない。