w_statfs() - ファイル・システム状況の取得

標準

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

形式

#include <sys/statfs.h>

int w_statfs(const char *filesystem, struct w_statfs *statbuf, size_t length);

機能説明

特定のファイル・システムについての状況を取得します。
filesystem
状況が検索されているファイル・システムの名前。このファイル・システム名は、次のいずれかである可能性があります。
  • BPXPRMxx parmlib メンバー内の ROOT または MOUNT ステートメントの FILESYSTEM パラメーターに指定されている 名前
  • TSO/E MOUNT コマンドに指定されている名前
  • 前に w_getmntent() を呼び出したときに戻された名前
statbuf
状況情報が入れられるバッファー。状況情報は、sys/statfs.h ヘッダー・ファイルによってマップされます。
int statfs_len
statfs の長さ
int statfs_blksize
ブロック・サイズ
unsigned int statfs_total_space
ブロック・サイズ単位の合計スペース
unsigned int statfs_used_space
ブロック・サイズ単位の割り振られたスペース
unsigned int statfs_free_space
ブロック・サイズ単位の特権ユーザー以外のユーザーに使用可能なスペース
length
バッファーの長さ。バッファーの長さと構造体の長さが比較され、2 つのうち短い方が バッファーに戻す情報量を判別するために使用されます。

バッファー長がゼロの場合には、戻り値だけが戻されます。プロセスはゼロの長さを使用して、ファイル・システムが存在して いるかどうかを検出できます。

XPG4.2 の特殊な動作: w_statfs() は w_statvfs() によって置き換えられます。

戻り値

正常に実行された場合、w_statfs() はデータの長さを バッファーに戻します。

正常に実行されなかった場合、w_statfs() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EINVAL
パラメーターが間違って指定されました。

CELEBW36
⁄* CELEBW36 *⁄
#define _OPEN_SYS
#include <sys⁄statfs.h>
#include <stdio.h>

main() {
  char fs[]="POSIX.ROOT.FS";
  struct w_statfs buf;

  if (w_statfs(fs, &buf, sizeof(buf)) == -1)
    perror("w_statfs() error");
  else {
    printf("each block in %s is %d bytes big¥n", fs,
           buf.statfs_blksize);
    printf("there are %d blocks in use out of a total of %d¥n",
           buf.statfs_used_space, buf.statfs_total_space);
    printf("in bytes, that's %.0f bytes used out of a total of %.0f¥n",
           ((double)buf.statfs_used_space  * buf.statfs_blksize),
           ((double)buf.statfs_total_space * buf.statfs_blksize));
  }
}
出力:
each block in POSIX.ROOT.FS is 4096 bytes big
there are 2089 blocks in use out of a total of 2400
in bytes, that's 8556544 bytes used out of a total of 9830400

関連情報