日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




ファイルから読み込みを行います。

形式

#include <sys/uio.h>

ssize_t readv (int file_desc, const struct iovec *iov, int iovcnt);

ssize_t _readv64 (int file_desc, struct __iovec64 *iov, int iovcnt);

関数バリアント readv関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための, _readv32_readv64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.9 節を参照してください。

引数



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 より大きい値でした。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.