oracular (3) aio_write.3.gz

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

名前

       aio_write - 非同期で書き込む

書式

       #include <aio.h>

       int aio_write(struct aiocb *aiocbp);

       -lrt でリンクする。

説明

       aio_write()   関数は、aiocbp   が指すバッファーに記載された   I/O  リクエストをキューに入れる。この関数は
       write(2) の非同期版である。 呼び出し

           write(fd, buf, count)

       の各引数は aiocb が指す構造体の aio_fildes, aio_buf, aio_nbytes に (この順序で) 対応する (aiocb  構造体の
       説明は aio(7) を参照)。

       O_APPEND  が設定されない場合、ファイルオフセットに関係なく、 データは絶対位置 aiocbp->aio_offset を開始点
       として書き込まれる。 O_APPEND が設定されている場合、データはファイルの末尾に、 aio_write() の呼び出しが行
       われたのと同じ順序で書き込まれる。この呼び出しの後のファイルオフセットは規定されていない。

       「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」  ということである。 呼び出し
       から戻った時に、書き込みは完了しているかも知れないし、 完了していないかも知れない。 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 が書き込みのためにオープンされた有効なファイルディスクリプターではない。

       EFBIG  ファイルは通常のファイルであり、少なくとも 1 バイトを書き込もうとしている。 しかし開始位置が、この
              ファイルの最大オフセットと同じかそれを超えている。

       EINVAL aio_offset, aio_reqprio, aio_nbytes のうち 1 つ以上が無効である。

       ENOSYS aio_write() は実装されていない。

バージョン

       The aio_write() 関数は glibc 2.1 以降で利用できる。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌─────────────────┬───────────────┬─────────┐
       │インターフェース属性      │
       ├─────────────────┼───────────────┼─────────┤
       │aio_write()      │ Thread safety │ MT-Safe │
       └─────────────────┴───────────────┴─────────┘

準拠

       POSIX.1-2001, POSIX.1-2008.

注意

       使用する前に制御ブロックを 0 にしておくのは、よい考えである。  この制御ブロックは、読み込み操作が進行して
       いる間は変更すべきでない。 読み込まれるバッファー領域は 操作の最中にアクセスすべきではない。 さもないと起
       こる結果が不定になる。 これに含まれるメモリー領域は、有効なままにしなければならない。

       同じ aiocb 構造体を指定して同時に複数の I/O 操作を行った場合、 どのような結果になるかは不定である。

関連項目

       aio_cancel(3), aio_error(3), aio_fsync(3),  aio_read(3),  aio_return(3),  aio_suspend(3),  lio_listio(3),
       aio(7)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告
       に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

                                                   2017-09-15                                       AIO_WRITE(3)