日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
ftw |
ファイル・ツリーを検索します。
#include <ftw.h>int ftw (const char *path, int(*function)(const char *, const struct stat *, int), int depth);
path
検索するディレクトリ階層構造。function
ディレクトリ階層構造の各ファイルに対して起動する関数。depth
ftwで使用できるディレクトリ・ストリームまたはファイル記述子 ( またはその両方 ) の最大数。この引数は 1〜OPEN_MAX の範囲でなければなりません。
ftw関数は,path 引数によって指定されるディレクトリから順にディレクトリ階層構造を再帰的に検索します。 path 引数は OpenVMS 形式あるいは UNIX 形式で指定する必要があります。階層構造内の各ファイルに対して, ftwは function 引数によって指定される関数を呼び出し,ファイルの名前を格納したヌル区切り文字列,ファイルに関する情報を格納した stat構造体を指すポインタ,および整数を渡します。
整数はファイル・タイプを示します。使用できる値は <ftw.h>に定義されており,次のとおりです。
FTW_F 一般ファイル FTW_D ディレクトリ FTW_DNR 読み込むことができないディレクトリ FTW_NS stat を正しく実行できないファイル
整数が FTW_DNR の場合は,そのディレクトリに格納されているファイルとサブディレクトリは処理されません。
整数が FTW_NS の場合は, stat構造体の内容は意味がありません。たとえば,読み込みアクセス許可が与えられ,実行 (検索) アクセス許可が与えられていないディレクトリ内のファイルの場合, function 引数は FTW_NS を渡します。
ftw関数はファイルまたはサブディレクトリを処理する前に,ディレクトリの処理を終了します。
ftw関数は次のいずれかが発生するまで,検索を続行します。
- path 引数によって指定されたディレクトリ階層構造が終了するまで。
- function 引数によって指定された関数の呼び出しが 0 以外の値を返すまで。
- ftw関数の内部でエラー (I/O エラーなど) が検出されるまで。
ftw関数は再帰的であるため,非常に深いファイル構造に適用すると,スタック・オーバフローが発生して,メモリ・フォルトで終了する可能性があります。
ftw関数では,操作時に動的記憶域を割り当てるために malloc関数が使用されます。 function 引数によって示される関数から longjmpを呼び出した場合など, ftwが強制終了された場合, ftwはその記憶域の割り当てを解除することができません。したがって,記憶域は割り当てられたままになります。
割り込みを安全に処理するには,割り込みが発生したという事実を格納し, function 引数によって指定される関数が次回呼び出されるときに 0 以外の値を返すようにします。
注意
- ftw関数はリエントラントです。 function 引数として指定される関数もリエントラントであることを確認してください。
- C RTL は, stat構造体の標準準拠の定義および関連する定義をサポートしています。これを使用するには,機能テスト・マクロ _USE_STD_STAT を使用してアプリケーションをコンパイルします。詳細は,お使いのシステムのヘッダ・ファイル <stat.h>を参照してください。
- ftw関数は UNIX 形式のパス名指定をサポートします。 UNIX 形式のディレクトリ指定については,第 1.3.3 項を参照してください。
malloc, longjump,および statも参照してください。
0 正常終了を示します。 x function 引数によって指定される関数が検索を停止したことを示し,関数から返された値を返します。 -1 エラーを示します。 errno は次のいずれかの値に設定されます。
- EACCES--- path 引数のコンポーネントに対して検索アクセス許可が拒否されたか,または path 引数に対して読み込みアクセス許可が拒否されました。
- ENAMETOOLONG---パス文字列の長さが PATH_MAX より長いか,または [_POSIX_NO_TRUNC] が有効なときに,パス名コンポーネントが NAME_MAX より長いことを示します。
- ENOENT--- path 引数が存在しないファイルの名前を指しているか,または空文字列を指しています。
- ENOMEM---この操作を実行するのに必要なメモリが不足しています。
また, function 引数によって示される関数でエラーが検出されると, errno が適切な値に設定されることがあります。
目次 | 索引 |
|