標準
標準/拡張機能 |
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% /