umount() - 仮想ファイル・システムの除去

標準

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

形式

#include <sys/stat.h>

int umount(const char *filesystem, mtm_t mtm);

機能説明

ファイル階層からファイル・システムを除去するか、あるいは読み取り専用と読み取り/書き込み間にマウントされた ファイル・システムのマウント・モードを変更します。filesystem 引数は、ファイル・システム名が入っている NULL 終了ストリングです。これは、ファイル・システムをマウントしたときに指定したものと 同じ名前です。

ファイル・システムをアンマウントするには、呼び出し元が、許可プログラム であるか、もしくは適切な特権をもつユーザー名で実行されている必要があ ります。

mtm 引数は、次のいずれかにすることができます。
MTM_UMOUNT
標準アンマウント要求。名前が付いたファイル・システムのファイルが使用されていない 場合には、アンマウントが行われます。使用されている場合には、要求はリジェクトされます。
MTM_DRAIN
アンマウント・ドレーン要求。リクエスターは、ファイル・システムがアンマウントされる前に このファイル・システムの使用がすべて正常に終了するのを進んで 待機します。
MTM_IMMED
即時アンマウント要求。ファイル・システムが即時にアンマウントされ、指定された ファイル・システムのファイルのユーザーは強制的に失敗させられ ます。要求時までに行われたすべてのデータの変更は保管されます。データを保管する問題がある場合には、アンマウント要求は失敗します。
MTM_FORCE
強制アンマウント要求。ファイル・システムが即時にアンマウントされ、指定された ファイル・システムのファイルのユーザーは強制的に失敗させられ ます。要求時までに行われたすべてのデータの変更は保管されます。データを 保管する問題がある場合には、要求は継続し、データは失われること があります。データが失われることがないようにするために、強制 umount() 要求を出す前に即時 umount() 要求を出します。
MTM_RESET
リセット・アンマウント要求。これを使用すると、前のアンマウント・ドレーン要求を停止できます。
MTM_REMOUNT
再マウント要求。これは、ファイル・システムのマウント・モードを読み取り専用から 読み取り/書き込みへ、または読み取り/書き込みから読み取り専用へ 変更します。MTM_RDONLY も MTM_RDWR も指定されていない場合 には、モードは現在の状態の反対に設定されます。モードが 指定されている場合には、現在の状態の反対になる必要があります。
MTM_SAMEMODE
マウント・モードを変更せずにアンマウントおよび再マウントする、再マウント要求。MTM_RDONLY または MTM_RDWR のいずれかも指定されている場合は、現在の状態である必要があります。これは、入出力エラーが発生したファイル・システムを、再利用できるようにするために使用できます。

戻り値

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

正常に実行されなかった場合、umount() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EBUSY
次の理由のいずれかで、ファイル・システムは使用中です。
  • umount() (MTM_UMOUNT) が要求され、ファイル・システム にはまだオープン・ファイルまたは他のファイル・システムが その下にマウントされています。
  • ファイル・システムは、現在要求ファイル・システムに マウントされています。
  • RESET が要求され、直前の umount() 要求はドレーン要求では なく、即時または強制要求でした。
  • 指定されたファイル・システムの場合には、既に進行中の umount() 要求があります。
  • umount() ドレーン要求はリセット中です。
EINTR
umount() にシグナルが割り込みました。
EINVAL
パラメーターが間違って指定されました。ファイル・システム名のスペルと mtm の設定値を確かめて ください。
EIO
入出力エラーが発生しました。
EPERM
アンマウントを出すために、スーパーユーザー権限が必要です。

CELEBU02
⁄* CELEBU02

   This example removes a file, using umount().

 *⁄
#define _OPEN_SYS 1
#include <sys⁄stat.h>
#include <stdio.h>
#include <unistd.h>

main() {
  char HFS[]="POSIX.NEW.HFS";
  char filesystype[9]="HFS     ";
  setvbuf(stdout, NULL, _IOLBF, 0);
  puts("before umount()");
  system("df -Pk");
  if (umount(HFS, MTM_UMOUNT) != 0)
    perror("umount() error");
  else {
    puts("After umount()");
    system("df -Pk");
  }
}
出力:
before umount()
Filesystem   1024-blocks        Used  Available  Capacity     Mounted on
POSIX.NEW.HFS        200          20        180       10%     /new_fs
POSIX.ROOT.FS       9600        8180       1420       85%     /

After umount()
Filesystem   1024-blocks        Used  Available  Capacity     Mounted on
POSIX.ROOT.FS       9600        8180       1420       85%     /

関連情報