日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
readdir, readdir_r |
ディレクトリ内のエントリを探します。
#include <dirent.h>struct dirent *readdir (DIR *dir_pointer);
int readdir_r (DIR *dir_pointer, struct dirent *entry, struct dirent **result);
dir_pointer
オープン・ディレクトリの dir構造体へのポインタ。entry
指定されたストリームの現在位置にあるディレクトリ・エントリによって初期化される, dirent構造体へのポインタ。result
実行に成功したときに,entry へのポインタが格納される位置。
readdir関数は, dir_pointer によって指定されるディレクトリ・ストリーム内の現在位置にあるディレクトリ・エントリを表す構造体へのポインタを返し,ディレクトリ・ストリームの位置を次のエントリに設定します。ディレクトリ・ストリームの終端に達すると,NULL ポインタを返します。ディレクトリ・エントリは, <dirent.h>ヘッダ・ファイルに定義されている dirent構造体によって記述されます。<dirent.h>ヘッダ・ファイルに定義されている DIR型は,ディレクトリ・ストリームを表します。ディレクトリ・ストリームとは,特定のディレクトリ内のすべてのディレクトリ・エントリの順序付きのシーケンスです。ディレクトリ・エントリはファイルを表します。 readdir関数の操作とは非同期的に,ディレクトリのファイルの削除や追加を行うことができます。
readdir関数から返されるポインタは,同じディレクトリ・ストリームに対する別の readdir呼び出しによって上書きすることができるデータをポイントしています。このデータは,他のディレクトリ・ストリームに対する別の readdir呼び出しによって上書きされることはありません。
直前の opendirまたは rewinddir関数の呼び出しの後に,ディレクトリのファイルが削除または追加された場合,その後の readdir関数の呼び出しでは,そのファイルのエントリが返されない可能性があります。
ディレクトリの終端に達したとき,または無効な seekdir操作を検出したとき, readdir関数は null 値を返します。
無効な位置をシークしようと試みると, readdir関数は,次に呼び出されたときに null 値を返します。その前の telldir関数呼び出しが,その位置を返します。
readdir_r関数は, readdirのリエントラントなバージョンです。 dir_pointer に加えて,指定されたストリームの現在のディレクトリ・エントリが返される dirent構造体へのポインタを指定する必要があります。
操作が成功した場合, readdir_rは 0 を返し, result に次の 2 つのポインタのうちのどちらかを格納します。
- エントリが発見された場合には,entry へのポインタ
- ディレクトリ・ストリームの終端に達した場合には,NULL ポインタ
entry がポイントするストレージは,少なくとも NAME_MAX + 1 個の要素を含んだ char d_nameメンバの配列を含んでいる direntに十分な大きさでなくてはなりません。
エラーが発生した場合には,エラーの原因を示すエラー値が返されます。
アプリケーションでエラー状況を確認したい場合は, readdirを呼び出しす前に errnoを 0 に設定します。 errnoに 0 以外の値が設定されている場合,エラーが発生しています。
例については, closedirの説明を参照してください。
x readdir の実行が成功した場合には, struct dirent 型のオブジェクトへのポインタ。 0 readdir_r の実行が成功しました。 x エラーの場合には,エラー値 ( readdir_r のみ。) NULL エラーが発生したか,ディレクトリ・ストリームの終端に達しました ( readdir_r のみ)。エラーが発生した場合, errno はその原因を示す値に設定されます。
目次 | 索引 |
|