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


OpenVMS マニュアル


 

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

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

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


目次 索引




ファイルに書き込みを行います。

形式

#include <uio.h>

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

ssize_t __writev64 (int file_desc, const struct __iovec64 *iov, int iovcnt); (Integrity, Alpha)

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

引数



file_desc

現在,書き込みまたは更新用にオープンされているファイルを参照するファイル記述子。

iov

出力データの取得元となる iovec構造体の配列。

iovcnt

iov 配列のメンバによって指定されるバッファの数。

説明

writev関数は writeと同じ機能を持ちますが,出力データを iov 配列のメンバ (iov[0], iov[1], ..., iov[iovcnt - 1]) で指定される iovcnt 個のバッファから取得します。iovcnt 引数は,0 よりも大きく, <limits.h>に定義されている {IOV_MAX} 以下である場合に有効となります。

個々の iovecエントリは,データの取得元となるメモリ内の領域のベース・アドレスと長さを指定します。 writev関数は,その領域全体を書き込んだ後に,次の領域に進みます。

filedes が通常のファイルを参照しており, iov がポイントする配列内のすべての iov_lenメンバが 0 だった場合, writevは 0 を返し,何の効果も持ちません。

その他のファイル・タイプでの動作は定められていません。

iov_len値の合計が SSIZE_MAX よりも大きい場合,操作は失敗し,データは転送されません。

実行に成功すると, writevは実際に書き込まれたバイト数を返します。それ以外の場合は値 - 1 を返し,ファイル・ポインタは変更されず, errnoはエラーを示す値に設定されます。


戻り値

x 書き込まれたバイト数。
-1    エラーを示します。ファイルの時刻は変更されず,関数は errno を以下のいずれかの値に設定します。

  • EBADF--- file_desc 引数が,書き込み用にオープンされた有効なファイル記述子でない。

  • EINTR---書き込み操作はシグナルを受信したために終了し,データは転送されなかった。

  • EINVAL--- iov 配列の中の iov_len 値の合計が ssize_t のオーバフローを引き起こす,または iovcnt 引数が 0 以下,あるいは {IOV_MAX} よりも大きかった。

  • EIO---物理 I/O エラーが発生した。

  • ENOSPC---ファイルを含んでいるデバイス上に空きスペースがない。

  • EPIPE---どのプロセスの読み込み用にもオープンされていない,または片側だけがオープンされているパイプまたは FIFO に書き込もうとした。スレッドには SIGPIPE シグナルも送信される。


目次 索引

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