.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" .
.\" %%%LICENSE_END
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\"
.\" Japanese Version Copyright (c) 2004 Yuichi SATO
.\" all rights reserved.
.\" Translated Sat Jul 10 03:54:47 JST 2004
.\" by Yuichi SATO
.\" Updated 2012-04-30, Akihiro MOTOKI
.\" Updated 2012-05-29, Akihiro MOTOKI
.\" Updated 2013-03-25, Akihiro MOTOKI
.\"
.TH AIO_WRITE 3 2017\-09\-15 "" "Linux Programmer's Manual"
.SH 名前
aio_write \- 非同期で書き込む
.SH 書式
\fB#include \fP
.PP
\fBint aio_write(struct aiocb *\fP\fIaiocbp\fP\fB);\fP
.PP
\fI\-lrt\fP でリンクする。
.SH 説明
\fBaio_write\fP() 関数は、\fIaiocbp\fP が指すバッファーに記載された I/O リクエストをキューに入れる。この関数は
\fBwrite\fP(2) の非同期版である。
呼び出し
.PP
write(fd, buf, count)
.PP
の各引数は \fIaiocb\fP が指す構造体の \fIaio_fildes\fP, \fIaio_buf\fP, \fIaio_nbytes\fP
に (この順序で) 対応する (\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)。
.PP
\fBO_APPEND\fP が設定されない場合、ファイルオフセットに関係なく、 データは絶対位置 \fIaiocbp\->aio_offset\fP
を開始点として書き込まれる。 \fBO_APPEND\fP が設定されている場合、データはファイルの末尾に、 \fBaio_write\fP()
の呼び出しが行われたのと同じ順序で書き込まれる。この呼び出しの後のファイルオフセットは規定されていない。
.PP
「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」
ということである。 呼び出しから戻った時に、書き込みは完了しているかも知れないし、
完了していないかも知れない。 \fBaio_error\fP(3) を使うことで完了したかをテストできる。
完了した I/O 操作の返り値は \fBaio_return\fP(3) で取得できる。
\fIaiocbp\->aio_sigevent\fP を適切に設定することで、
I/O 完了の非同期通知は受けることもできる。詳細は \fBsigevent\fP(7) を参照。
.PP
\fB_POSIX_PRIORITIZED_IO\fP が定義されていて、 かつファイルがこれをサポートしている場合、
非同期操作は呼び出したプロセスの優先度から \fIaiocbp\->aio_reqprio\fP を引いた優先度で登録 (submit) される。
.PP
フィールド \fIaiocbp\->aio_lio_opcode\fP は無視される。
.PP
最大オフセットを超えた通常のファイルには、何もデータが書き込まれない。
.SH 返り値
成功した場合、0 が返される。 エラーの場合、リクエストはキューに入れられず、
\-1 が返されて、 \fIerrno\fP が適切に設定される。 エラーは後でのみ検知された場合は、
エラーは \fBaio_return\fP(3) と \fBaio_error\fP(3) 経由で報告されることになる
(\fBaio_return\fP(3) は状態 \-1 を返し、\fBaio_error\fP(3) でエラー状態\(em
\fIerrno\fP で取得できる \fBEBADF\fP のようなエラー状態が返される)。
.SH エラー
.TP
\fBEAGAIN\fP
リソースが足りない。
.TP
\fBEBADF\fP
\fIaio_fildes\fP が書き込みのためにオープンされた有効なファイルディスクリプターではない。
.TP
\fBEFBIG\fP
ファイルは通常のファイルであり、少なくとも 1 バイトを書き込もうとしている。 しかし開始位置が、このファイルの最大オフセットと同じかそれを超えている。
.TP
\fBEINVAL\fP
\fIaio_offset\fP, \fIaio_reqprio\fP, \fIaio_nbytes\fP のうち 1 つ以上が無効である。
.TP
\fBENOSYS\fP
\fBaio_write\fP() は実装されていない。
.SH バージョン
The \fBaio_write\fP() 関数は glibc 2.1 以降で利用できる。
.SH 属性
この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。
.TS
allbox;
lb lb lb
l l l.
インターフェース 属性 値
T{
\fBaio_write\fP()
T} Thread safety MT\-Safe
.TE
.SH 準拠
POSIX.1\-2001, POSIX.1\-2008.
.SH 注意
.\" or the control block of the operation
使用する前に制御ブロックを 0 にしておくのは、よい考えである。 この制御ブロックは、読み込み操作が進行している間は変更すべきでない。
読み込まれるバッファー領域は 操作の最中にアクセスすべきではない。 さもないと起こる結果が不定になる。
これに含まれるメモリー領域は、有効なままにしなければならない。
.PP
同じ \fIaiocb\fP 構造体を指定して同時に複数の I/O 操作を行った場合、
どのような結果になるかは不定である。
.SH 関連項目
\fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3),
\fBaio_return\fP(3), \fBaio_suspend\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
.SH この文書について
この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
\%https://www.kernel.org/doc/man\-pages/ に書かれている。