標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4 |
両方 |
#define _XOPEN_SOURCE
#include <ftw.h>
int ftw(const char *path,
int (*fn)(const char *, const struct stat *, int),
int ndirs);
整数が FTW_DNR である場合は、そのディレクトリーの子孫は処理されません。整数が FTW_NS である場合は、stat 構造体には未定義な値が含まれます。FTW_NS を fn で指定される関数へ受け渡すオブジェクトの例は 、読み取り許可は持つが、実行 (検索) 許可は持たないディレクトリー内のファ イルです。
ftw() 関数は、ディレクトリーの子孫のいずれかを走査する前に、ディレクトリーを走査します。
ftw() 関数は、ツリー内のレベルごとに多くても 1 つのファイル記述子 を使用するだけです。
ndirs 引数は、1 ~ OPEN_MAX の範囲 内でなければなりません。
ツリーを完全に走査するか、fn の呼び出しでゼロ以外の値が戻るか、またはその他のエラー ([EACCES] 以外) が ftw() で検出される までは、ツリー巡回が継続されます。
ndirs 引数は、ツリーの走査中に ftw() が使用できる ディレクトリー・ストリームかファイル記述子またはこの両方の最大数を 指定します。ftw() は、戻り時には、使用したディレクトリー・ストリームと ファイル記述子をクローズします。ただし、アプリケーション提供 の fn 関数によってオープンされたものは、クローズの対象に 含まれません。
z/OS UNIX の大規模ファイルのサポート: AMODE 64 C/C++ アプリケーションの場合は、z/OS UNIX の大規模ファイルが自動的にサポートされます。AMODE 31 C/C++ アプリケーションは、オプション LANGLVL(LONGLONG) を指定してコンパイルされなければなりません。また、ヘッダーがインクルードされる前に _LARGE_FILES フィーチャー・テスト・マクロを定義して、2 GB のサイズより大きい z/OS UNIX ファイルをこの関数が操作できるようにしなければなりません。ファイル・サイズとオフセット・フィールドは、63 ビットの幅に拡張されます。したがって、_LARGE_FILES フィーチャー・テスト・マクロの定義も行うには、ファイルを操作する他のいずれかの関数が必要です。
ツリーを完全に走査すると、ftw() は 0 を戻します。fn が指す関数がゼロ以外の値を戻すと、ftw() は、ツリー巡回を停止し、fn() が指す関数で戻された値が何であってもその値を戻します。