AIO_READ
Section: Linux Programmer's Manual (3)
Updated: 2020-06-09
Index
JM Home Page
roff page
 
名前
aio_read - 非同期で読み込む
 
書式
#include <aio.h>
int aio_read(struct aiocb *aiocbp);
-lrt でリンクする。
 
説明
aio_read() 関数は、aiocbp が指すバッファーに記載された I/O リクエストを
キューに入れる。この関数は read(2) の非同期版である。
呼び出し
    read(fd, buf, count)
の各引数は aiocb が指す構造体の aio_fildes, aio_buf, aio_nbytes
に (この順序で) 対応する (aiocb 構造体の説明は aio(7) を参照)。
データの読み込みは、ファイルオフセットに関係なく、絶対位置 aiocbp->aio_offset
を開始点として行われる。呼び出しの後のファイルオフセットは規定されていない。
「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」
ということである。 呼び出しから戻った時に、読み込みは完了しているかも知れないし、
完了していないかも知れない。 aio_error(3) を使うことで完了したかをテストできる。
完了した I/O 操作の返り値は aio_return(3) で取得できる。
aiocbp->aio_sigevent を適切に設定することで、
I/O 完了の非同期通知は受けることもできる。詳細は sigevent(7) を参照。
_POSIX_PRIORITIZED_IO が定義されていて、 かつファイルがこれをサポートしている場合、
非同期操作は呼び出したプロセスの優先度から aiocbp->aio_reqprio を引いた優先度で登録 (submit) される。
フィールド aiocbp->aio_lio_opcode は無視される。
最大オフセットを超えた通常のファイルからは、何もデータが読み込まれない。
 
返り値
成功した場合、0 が返される。 エラーの場合、リクエストはキューに入れられず、
-1 が返されて、 errno が適切に設定される。 エラーは後でのみ検知された場合は、
エラーは aio_return(3) と aio_error(3) 経由で報告されることになる
(aio_return(3) は状態 -1 を返し、aio_error(3) でエラー状態---
errno で取得できる EBADF のようなエラー状態が返される)。
 
エラー
- EAGAIN
 - 
リソースが足りない。
 - EBADF
 - 
aio_fildes は読み込みのためにオープンされた有効なファイルディスクリプターでない。
 - EINVAL
 - 
aio_offset, aio_reqprio, aio_nbytes のうち 1 つ以上が無効である。
 - ENOSYS
 - 
aio_read() は実装されていない。
 - EOVERFLOW
 - 
ファイルが通常のファイルであり、 ファイルの終端の前から読み込みを開始して、 少なくとも 1 バイトを読み込もうとした。
しかし開始位置がこのファイルの最大オフセットを超えていた。
 
 
バージョン
The aio_read() 関数は glibc 2.1 以降で利用できる。
 
属性
この節で使用されている用語の説明については、 attributes(7) を参照。
| インターフェース | 属性 | 値
  | 
| 
aio_read()
 | Thread safety | MT-Safe
  | 
 
準拠
POSIX.1-2001, POSIX.1-2008.
 
注意
使用する前に制御ブロックを 0 にしておくのは、よい考えである。 この制御ブロックは、読み込み操作が進行している間は変更すべきでない。
読み込まれるバッファー領域は 操作の最中にアクセスすべきではない。 さもないと起こる結果が不定になる。
これに含まれるメモリー領域は、有効なままにしなければならない。
同じ aiocb 構造体を指定して同時に複数の I/O 操作を行った場合、
どのような結果になるかは不定である。
 
例
aio(7) を参照。
 
関連項目
aio_cancel(3), aio_error(3), aio_fsync(3), aio_return(3),
aio_suspend(3), aio_write(3), lio_listio(3), aio(7)
 
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/ に書かれている。
 Index
- 名前
 - 
 - 書式
 - 
 - 説明
 - 
 - 返り値
 - 
 - エラー
 - 
 - バージョン
 - 
 - 属性
 - 
 - 準拠
 - 
 - 注意
 - 
 - 例
 - 
 - 関連項目
 - 
 - この文書について
 - 
 
This document was created by
man2html,
using the manual pages.
Time: 16:46:40 GMT, November 24, 2023