mount() - 使用可能ファイル・システムの作成

標準

標準/拡張機能 C/C++ 依存項目
z/OS®UNIX 両方  

形式

#define _OPEN_SYS

#include <sys/stat.h>

int mount(const char *path, char *filesystem,
          char *filesystype, mtm_t mtm,
          int parmlen, char *parm);

機能説明

ファイル・システムを階層ファイル・システム (HFS) に追加します。階層ファイル・システムの複数の場所で、同じ ファイル・システムをマウントすることはできません。

ファイル・システムをマウントするには、呼び出し元が 許可プログラムであるか、あるいは該当する権限を持つユーザー用に 実行されているプログラムでなければなりません。

path
ファイル・システムのマウント先の マウント・ポイント・ディレクトリー。
filesystem
マウントされるファイル・システムの名前。これは、システム内で固有の名前にする必要がある。階層ファイル・システム (HFS) データ・セットの場合、この名前は、すべて大文字で指定する 1 ~ 44 文字の MVS™ データ・セット名である。

この名前は NULL 文字で終了する。

filesystype
マウントを実行するファイル・システムの名前。この 8 文字の名前は、このファイル・システム用 の BPXPRMxx parmlib メンバーに ある FILESYSTYPE ステートメントの TYPE オペランドと 一致しなければならない。
mtm
マウント・モードと追加のマウント・オプションを指定するフラグ・フィールド。
MTM_RDONLY
読み取り専用ファイル・システムとしてファイル・システムを マウントする。
MTM_RDWR
読み取り/書き込みファイル・システムとして ファイル・システムをマウントする。
MTM_NOSUID
このファイル・システムに常駐するプログラムに 対して、SETUID および SETGID モード・フラグが無視される。
MTM_SYNCHONLY
マウントは同期的に完了しなければならない。つまり、同期的に完了しない場合にはマウントが失敗する。
parmlen
parm 引数の長さ。最大長 は 500 文字です。階層ファイル・システム (HFS) データ・セットの場合、これは指定しない。
parm
マウントを行う物理ファイル・システムに渡されるパラメーター。このパラメーターが不要な場合もある。parm の形式と内容は、物理ファイル・システムで判別される。階層ファイル・システム (HFS) データ・セットは、parm を必要としない

戻り値

正常に実行された場合、mount() は 0 を戻します。

mount() が非同期的に進行している場合は、1 が戻されます。

正常に実行されなかった場合、mount() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EBUSY
指定されたファイル・システムが使用できません。
EINVAL
パラメーターが間違って指定されました。filesystypemtm が正しいかを確認してください。このエラーに考えられるほかの理由として、マウント・ポイントがファイル・システムのルートであること、あるいはファイル・システムが既にマウント済みであることが あります。
EIO
入出力エラーが発生しました。
ELOOP
ループがシンボリック・リンクに存在しています。pathname の解決 で POSIX_SYMLOOP (limits.h ヘッダー・ファイルで 定義) を超えるシンボリック・リンクが検出されると、このエラーが 発行されます。
ENOENT
マウント・ポイントが存在しません。
ENOMEM
このファイル・システムに必要な情報を保管するのに 使用できる十分なストレージがありません。
ENOTDIR
マウント・ポイントがディレクトリーではありません。
EPERM
マウントを発行するためにはスーパーユーザー権限が必要です。

CELEBM21
⁄* CELEBM21

   This example adds a file system to the hierarchical
   file system.
 
 *⁄
#define _OPEN_SYS
#include <sys⁄stat.h>
#include <stdio.h>
#include <unistd.h>

main() {
  char mount_point[]="⁄new_fs";
  char HFS[]="POSIX.NEW.HFS";
  char filesystype[9]="HFS     ";

  setvbuf(stdout, NULL, _IOLBF, 0);
  puts("before mount()");
  system("df -Pk");
  if (mount(mount_point, HFS, filesystype, MTM_RDWR, 0, NULL) != 0)
    perror("mount() error");
  else {
    puts("After mount()");
    system("df -Pk");
    if (umount(HFS, MTM_UMOUNT) != 0)
      perror("umount() error");
  }
}
出力:
before mount()
Filesystem   1024-blocks        Used  Available  Capacity     Mounted on
POSIX.ROOT.FS       9600        8660        940       90%     /

After mount()
Filesystem   1024-blocks        Used  Available  Capacity     Mounted on
POSIX.NEW.HFS        200          20        180       10%     /new_fs
POSIX.ROOT.FS       9600        8660        940       90%     /

関連情報