HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
ディレクトリ内のエントリを探します。
#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に十分な大きさでなくてはなりません。
例については, closedirの説明を参照してください。
x readdir の実行が成功した場合には, struct dirent 型のオブジェクトへのポインタ。 0 readdir_r の実行が成功しました。 x エラーの場合には,エラー値 ( readdir_r のみ。) NULL エラーが発生したか,ディレクトリ・ストリームの終端に達しました ( readdir_r のみ)。エラーが発生した場合, errno はその原因を示す値に設定されます。
指定したシンボリック・リンクの内容を読み取って,ユーザの指定したバッファに格納します。
#include <unistd.h>ssize_t readlink (const char *restrict link_name, char *restrict user_buffer, size_t buffer_size);
link_name
シンボリック・リンク・ファイルの名前を示すテキスト文字列へのポインタ。user_buffer
ユーザ・バッファへのポインタ。buffer_size
ユーザ・バッファのサイズ。
readlink関数は,指定したシンボリック・リンク (link_name) の内容を読み取って,ユーザの指定した,サイズが buffer_size のバッファ (user_buffer) に格納します。symlink, unlink, realpath, lchown,および lstatも参照してください。
n 成功したことを示します。n は, user_buffer に格納されたバイト数です。 -1 エラーが発生したことを示します。バッファは変更されておらず, errno に,エラーを示す次のいずれかの値が設定されます。
- EACCES ---(1) 読み取り対象のシンボリック・リンクがあるディレクトリに,このユーザの読み取り許可が設定されていないか, (2) link_name のパス接頭辞に,検索許可のないコンポーネントが存在しています。
- ENAMETOOLONG ---(1) link_name 引数の長さが PATH_MAX を超えているか, (2) パス名に,長さが NAME_MAX を超えるコンポーネントが存在しています。
- close , open ,または read から返された errno の値。
ファイルから読み込みを行います。
#include <sys/uio.h>関数バリアント readv関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための, _readv32と _readv64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。ssize_t readv (int file_desc, const struct iovec *iov, int iovcnt);
ssize_t _readv64 (int file_desc, struct __iovec64 *iov, int iovcnt);
file_desc
ファイル記述子。ファイル記述子は,現在読み込み用にオープンされているファイルを指していなければなりません。iov
入力データが置かれる, iovec構造体の配列。iovcnt
iov 配列のメンバで指定するバッファの数。
readv関数は, readと同等ですが,入力データを,iov 配列のメンバ (iov[0], iov[1],...,iov[iovcnt-1]) で指定される iovcnt 個のバッファに置きます。 iovcnt 引数は,0 より大きく,IOV_MAX 以下であれば有効です。各 iovecエントリは,データを置くメモリ領域のベース・アドレスと長さを指定します。 readv関数は,次に進む前に必ず領域を完全に埋めます。
正常に終了すると, readvは,ファイルの st_atime フィールドをアップデートするよう,マークします。
同期入出力オプションがサポートされている場合は,次の処理が行われます。
O_DSYNC ビットと O_RSYNC ビットが設定されている場合,ファイル記述子に対する読み込み入出力操作は,同期 I/O データ一貫性の完了により定義されているとおりに完了します。
O_SYNC ビットと O_RSYNC ビットが設定されている場合,ファイル記述子に対する読み込み I/O 操作は,同期 I/O ファイル一貫性の完了により定義されているとおりに完了します。
共用メモリ・オブジェクト・オプションがサポートされている場合は,次の処理が行われます。
file_desc が共用メモリ・オブジェクトを指している場合, read関数の結果は未定義です。
通常のファイルの場合,file_desc に対応する,オープン済みのファイル記述子に設定されている最大オフセットを越えるデータ転送は実行されません。
n 読み込んだバイト数。 -1 読み込みエラーを示します。この関数は,errno に以下のいずれかの値を設定します。
- EAGAIN -- O_NONBLOCK フラグがファイル記述子に設定されていて,プロセスの遅延が発生します。
- EBADF -- file_desc 引数が,読み取り用にオープンされている有効なファイル記述子ではありません。
- EBADMSG -- control-normal モードが設定されている STREAM ファイルの場合に,読み込み待ちのメッセージに制御部が含まれていました。
- EINTER -- シグナルを受信したために読み込み操作が終了し,データは転送されませんでした。
- EINVAL -- file_desc で参照されている STREAM やマルチプレクサが,マルチプレクサからダウンストリームで直接的または間接的にリンクされていました。
または
iov 配列内の iov_len 値の合計が, ssize_t を超えていました。
- EIO -- 物理 I/O エラーが発生しました。
または
制御端末から読み込みを行おうとしているバックグラウンド・プロセスのメンバとなっているプロセスで,プロセスが SIGTTIN シグナルを無視またはブロックしているか,プロセス・グループがオーファンドの状態でした。
- EISDIR -- file_desc 引数がディレクトリを参照していますが,実装では, read , pread ,または readv によるディレクトリの読み込みを許していません。代わりに, readdir 関数を使用してください。
- EOVERFLOW -- ファイルが通常のファイルで, nbyte が 0 より大きい場合に,開始位置が,ファイルの終端よりも前で, file_desc に対応するオープン済みのファイル記述子で指定されている最大オフセット以上でした。
readv 関数は,次の場合に失敗 することがあります。
- EINVAL -- iovcnt 引数が 0 以下,または IOV_MAX より大きい値でした。
第 1 引数がポイントしている領域のサイズを,第 2 引数で指定されたバイト数に変更します。これらの関数は AST リエントラントです。
#include <stdlib.h>関数バリアント realloc関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _realloc32と _realloc64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。void *realloc (void *ptr, size_t size);
ptr
割り当て済み領域をポイントするポインタか,あるいは NULL。size
割り当て済み領域の新しいサイズ。
ptr が NULL ポインタである場合, realloc関数の動作は malloc関数と同じです。領域の内容は,古いサイズと新しいサイズのうちの小さい方までは変更されません。 ANSI C 標準は次のように述べています。「新しいサイズが古いサイズよりも大きい場合,新しく割り当てられるメモリ部分の値は不定である」。古い実装との互換性のために, HP C は新しく割り当てられたメモリを 0 に初期化します。
効率を高めるために,以前の実際の割り当ては,要求されたサイズよりも大きいサイズで行われた可能性があります。割り当てが mallocで行われた場合,前に要求された割り当てと実際の割り当ての間のメモリ部分の値は不定です。割り当てが callocで行われた場合,そのメモリは 0 に初期化されています。アプリケーションが, reallocがメモリを 0 に初期化することに依存している場合には,最初の割り当てに mallocではなく callocを使用するようにしてください。
free, cfree, calloc,および mallocも参照してください。
x 領域のアドレス。クォドワード (Alpha only) またはオクタワード (I64 only) にアラインされています。アドレスが返されるのは,十分なスペースを再割り当てするために,エリアを新しいアドレスに移動しなくてはならないことがあるためです。エリアが移動される場合,以前に占有されていたスペースは解放されます。 NULL スペースの再割り当てを行えないことを示します (十分なスペースがなかった場合など)。
POSIX ルートからの絶対パス名を返します。
#include <stdlib.h>char realpath (const char *restrict file_name, char *restrict resolved_name);
file_name
絶対パスを必要とするファイルについて,その名前を示すテキスト文字列へのポインタ。resolved_name
生成した絶対パスへのポインタ (生成した絶対パスは,null で終了する文字列として格納)。
realpath関数は, POSIX ルートからの絶対パス名を返します。生成したパス名は null で終了する文字列として, resolved_name が指すバッファ内に格納されます。格納されるパス名の最大長は,PATH_MAX バイトです。realpath関数は, POSIX 準拠モードでだけ,つまり,DECC$POSIX_COMPLIANT_PATHNAMES の値が,許されている値のいずれかになっている場合にだけ,サポートされます。
symlink, unlink, readlink, lchown,および lstatも参照してください。
x 成功したことを示します。 x は, resolved_name へのポインタです。 NULL エラーが発生したことを示します。ヌル・ポインタが返され, resolved_name が指しているバッファの内容は意味がありません。 errno に,エラーを示すよう次のいずれかの値が設定されます。
- ENAMETOOLONG --- file_name 引数の長さが PATH_MAX を超えたか,パス名に長さが NAME_MAX を超えるコンポーネントがあります。
- ENOENT --- file_name に既存のファイルを指定していないコンポーネントがあるか, file_name が空の文字列を指しています。
- chdir または stat から返された errno の値。
ターミナル・スクリーンに指定されたウィンドウを再ペイントします。 refresh関数は stdscrウィンドウに作用します。
#include <curses.h>int refresh();
int wrefresh (WINDOW *win);
win
ウィンドウへのポインタ。
このプロセスの結果として,ウィンドウの中の,サブウィンドウや他のウィンドウに占有されていない部分が,ターミナル・スクリーンに表示されます。占有されているウィンドウ全体をターミナル・スクリーンに表示するには, refreshまたは wrefresh関数の代わりに touchwin関数を呼び出します。touchwinも参照してください。
OK 成功を示します。 ERR エラーを示します。
| 前へ | 次へ | 目次 | 索引 |