Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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/ に書かれている。

                                            2020-06-09                                AIO_READ(3)