MOUNT(2)

名前
mount, umount - ファイルシステムをマウント/アンマウントする

書式
#include <sys/mount.h>
#include <linux/fs.h>

int mount(const char *specialfile, const char * dir , const char * filesystemtype, unsigned long rwflag , const void * data);

int umount(const char *specialfile);

int umount(const char *dir);

説明
mount は specialfile で指定されたファイルシステム(デバイス名であることが多い)を dir で指定されたディレクトリに結びつける。 umount は specialfile もしくは dir で指定された、既に結びつけられているファイルシステムを外す。 スーパーユーザーだけがファイルシステムのマウント/アンマウントができる。 引数 filesystemtype は /proc/filesystems 中にあげられている値の一つ(例えば "minix", "ext2", "msdos", "proc", "nfs", "iso9660" 等)を指定する。 引数 rwflag は先頭 16 ビットがマジックナンバー 0xC0ED であり、残りの 16 ビットはマ ウントフラグ(<linux/fs.h> 中に以下のように定義されている)である。
#define MS_RDONLY    1 /* mount read-only */
#define MS_NOSUID    2 /* ignore suid and sgid bits */
#define MS_NODEV     4 /* disallow access to device special files */
#define MS_NOEXEC    8 /* disallow program execution */
#define MS_SYNC     16 /* writes are synced at once */
#define MS_REMOUNT  32 /* alter flags of a mounted FS */
#define MS_MGC_VAL 0xC0ED0000
もしマジックナンバーがなければ、最後の2つの引数は使用されない。 引数 data は別のファイルシステムによって解釈される。

返り値
成功した場合 0 が返る。失敗した場合 -1 が返り、 errno がエラーの内容に従って設定される。

エラー
エラーの値はファイルシステムタイプに依存して以下に示すようになる。それ ぞれのファイルシステムタイプには固有のエラーがある場合があり、またそれ 独自の動作をすることもある。詳しくはカーネルのソースを見て欲しい。

EPERM
    実行者がスーパーユーザーではない。

ENODEV
    Filesystemtype がカーネル中で定義(config)されていない。

ENOTBLK
    Specialfile がブロックデバイスではない(デバイスが要求されている場合)。

EBUSY
    Specialfile は既にマウントされている。または既にファイルが書き込み用に開かれており、 読み込み専用に再マウントすることができない。または dir が既に使われており(あるタスクが使用中であったり、別のデバイスのマウン トポイントであったり、オープンされたファイルであったり....) dir にはマウントできない。

EINVAL
    Specialfile のスーパーブロックが無効である。または specialfile が dir. 対してマウントされていないのに再マウントが要求された。または dir がマウントポイントではないのにアンマウントの要求があった。

EFAULT
    場所を示す引数のひとつがユーザーのアドレス空間の外を指している。

ENOMEM
    カーネルがファイル名やデータをコピーするための空きページを確保できない。

ENAMETOOLONG
    パス名の長さが MAXPATHLEN を越えた。

ENOENT
    パス名が空である。もしくは指定されたパスが存在しない。

ENOTDIR
    2番目の引数、もしくは1番目の引数の接頭辞がディレクトリではない。

EACCES
    パスに含まれるディレクトリに検索(実行)許可がない。
    または MS_RONLY フラグ無しでリードオンリー(読み出しのみ)のファイルシス テムをマウントしようとした。
    またはブロックデバイス Specialfile が MS_NODEV オプションでマウントされたファイルシステムに位置している。

ENXIO
    ブロックデバイス specialfile のメジャーナンバが範囲を越えた。

EMFILE
    (ブロックデバイスが要求された時)ダミーデバイスのテーブルが一杯になった。

準拠
この関数は Linux 特有の関数であり、移植性を持たせたいプログラムには使 用すべきでない。

関連項目
mount(8), umount(8)