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; /* file-system 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 を返す。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
endfsent(), setfsent() |
Thread safety |
MT-Unsafe race:fsent |
getfsent(), getfsspec(), getfsfile() |
Thread safety |
MT-Unsafe race:fsent locale |
These functions are not in POSIX.1. Several operating systems have them, for
example, *BSD, SunOS, Digital UNIX, AIX (which also has a
getfstype()).
HP-UX has functions of the same names, that however use a
struct
checklist instead of a
struct fstab, and calls these functions
obsolete, superseded by
getmntent(3).
これらの関数はスレッドセーフではない。
Linux
ではブロックスペシャルデバイスを複数の場所にマウントでき、
また複数のデバイスが同じマウントポイントを共有できる
(この場合はそのマウントポイントに最後にマウントされたデバイスが意味を持つ)
が、
getfsfile() と
getfsspec()
はマッチした最初のエントリーしか返さないので、
これらの 2 つの関数は
Linux
での利用には適していない。
getmntent(3),
fstab(5)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。