AIO_WRITE
Section: Linux Programmer's Manual (3)
Updated: 2003-11-14
Index
JM Home Page
roff page
 
名前
aio_write - 非同期で書き込む
 
書式
#include <aio.h>
int aio_write(struct aiocb *aiocbp);
-lrt でリンクする。
 
説明
aio_write()
関数は非同期の "n = write(fd, buf, count)" をリクエストする。
ここで fd, buf, count は、それぞれ
aiocbp->aio_fildes,
aiocbp->aio_buf,
aiocbp->aio_nbytes
で与えられる。
返り値 (return status) n は、完了時に
aio_return(3)
を使って取得できる。
O_APPEND
が設定されない場合、カレントのファイル位置に関係なく、
データは絶対ファイルオフセット
aiocbp->aio_offset
を開始点として書き込まれる。
O_APPEND
が設定されている場合、データはファイルの終端に書き込まれる。
このリクエストの後の、カレントのファイル位置は規定されていない。
「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」
ということである。
呼び出しから戻った時に、書き込みは完了しているかも知れないし、
完了していないかも知れない。
aio_error(3)
を使うことで完了したかをテストできる。
_POSIX_PRIORITIZED_IO
が定義されていて、
かつファイルがこれをサポートしている場合、
非同期操作は呼び出したプロセスの優先度から
aiocbp->aio_reqprio
を引いた優先度で登録 (submit) される。
フィールド
aiocbp->aio_lio_opcode
は無視される。
最大オフセットを超えた通常のファイルには、何もデータが書き込まれない。
 
返り値
成功した場合、0 が返される。
エラーの場合、リクエストはキューに入れられず、
-1 が返されて、
errno
が適切に設定される。
エラーは最初に検知された後で、
(状態 -1 を返す)
aio_return(3)
と
(errno
で取得できる
EBADF
のようなエラー状態を返す)
aio_error(3)
で報告されるだろう。
 
エラー
- EAGAIN
- 
リソースが足りない。
- EBADF
- 
aio_fildes
は書き込みのためにオープンされた有効なファイルディスクリプタでない。
- EFBIG
- 
ファイルは通常のファイルであり、少なくとも 1 バイトを書き込もうとしている。
しかし開始位置が、このファイルの最大オフセットと同じかそれを超えている。
- EINVAL
- 
aio_offset,
aio_reqprio,
aio_nbytes
のうち 1 つ以上が無効である。
- ENOSYS
- 
この関数がサポートされていない。
準拠
POSIX.1-2001.
 
注意
使用する前に制御ブロックを 0 にしておくのは、よい考えである。
この制御ブロックは、読み込み操作が進行している間は変更すべきでない。
読み込まれるバッファ領域は
操作の最中にアクセスすべきではない。
さもないと起こる結果が不定になる。
これに含まれるメモリ領域は、有効なままにしなければならない。
 
関連項目
aio_cancel(3),
aio_error(3),
aio_fsync(3),
aio_read(3),
aio_return(3),
aio_suspend(3)
 Index
- 名前
- 
- 書式
- 
- 説明
- 
- 返り値
- 
- エラー
- 
- 準拠
- 
- 注意
- 
- 関連項目
- 
This document was created by
man2html,
using the manual pages.
Time: 03:26:36 GMT, April 25, 2010