doc/documentation/manual-pages/ja/man2/aio_write.2
Sergio Carlavilla Delgado 989d921f5d Migrate doc to Hugo/AsciiDoctor
I'm very pleased to announce the release of
our new website and documentation using
the new toolchain with Hugo and AsciiDoctor.

To get more information about the new toolchain
please read the FreeBSD Documentation Project Primer[1],
Hugo docs[2] and AsciiDoctor docs[3].

Acknowledgment:
Benedict Reuschling <bcr@>
Glen Barber <gjb@>
Hiroki Sato <hrs@>
Li-Wen Hsu <lwhsu@>
Sean Chittenden <seanc@>
The FreeBSD Foundation

[1] https://docs.FreeBSD.org/en/books/fdp-primer/
[2] https://gohugo.io/documentation/
[3] https://docs.asciidoctor.org/home/

Approved by:    doceng, core
2021-01-26 00:31:29 +01:00

201 lines
5.5 KiB
Groff

.\" Copyright (c) 1999 Softweyr LLC.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY Softweyr LLC AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL Softweyr LLC OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/aio_write.2,v 1.18 2004/07/03 22:30:09 ru Exp %
.\"
.\" $FreeBSD$
.Dd June 2, 1999
.Dt AIO_WRITE 2
.Os
.Sh 名称
.Nm aio_write
.Nd ファイルへの非同期書込み (REALTIME)
.Sh ライブラリ
.Lb libc
.Sh 書式
.In aio.h
.Ft int
.Fn aio_write "struct aiocb *iocb"
.Sh 解説
.Fn aio_write
システムコールによって、呼び出し元プロセスは
.Fa iocb->aio_buf
が指すバッファから記述子
.Fa iocb->aio_fildes
.Fa iocb->aio_nbytes
を書き込めます。
書込み要求が記述子への待ち行列に入れられてしまうと、
ただちに呼び出しは戻ります。
呼び出しが戻った時点で書込みは完了している可能性も完了していない
可能性もあります。
無効な引数のためなどにより要求を待ち行列に入れられない場合は、
呼び出しは要求を待ち行列に入れずに戻ります。
.Pp
.Fa iocb->aio_fildes
用に
.Dv O_APPEND
が設定されている場合、
.Fn aio_write
操作は呼び出しが行われたのと同じ順序で
ファイルの末尾に追加されます。
.Dv O_APPEND
がファイル記述子用に設定されていない場合、書込み操作はファイルの先頭に
.Fa iocb->aio_offset
を加えた絶対位置で行われます。
.Pp
.Dv _POSIX_PRIORITIZED_IO
が定義されており、かつ記述子がそれをサポートしている場合、
待ち行列に入れられた操作は呼び出しプロセスの優先順位から
.Fa iocb->aio_reqprio
を減算したのに等しい優先順位にされます。
.Pp
.Fa iocb
ポインタは待ち行列に入れられた操作の戻り値、またはエラー状態を
判定するために、
.Fn aio_return
および
.Fn aio_error
への引数として使用できます。
.Pp
要求が正常に待ち行列に入れられると、コンテキストとして要求の間に
.Fa iocb->aio_offset
の値が修正できるので、
この値は要求が待ち行列に入れられた後に参照されてはなりません。
.Sh 制限
.Fa iocb
が指す非同期入出力制御ブロック構造体、およびその構造体の
.Fa iocb->aio_buf
メンバが参照するバッファは、
操作が完了するまで有効なままでいる必要があります。
このため、これらのオブジェクトについて自動 (スタック) 変数
の使用は推奨されません。
.Pp
正しくないコンテキスト情報がカーネルに引き渡されるのを回避するために、
非同期入出力制御バッファ
.Fa iocb
は、
.Fn aio_write
システムコールの前に 0 にする必要があります。
.Pp
要求が待ち行列に入れられた後、要求が完了するまでは
非同期入出力制御ブロック構造体、
またはバッファの内容を修正することは許されません。
.Pp
.Fa iocb->aio_offset
内のファイルオフセットが
.Fa iocb->aio_fildes
用のオフセット最大を越える場合は入出力は行われません。
.Sh 戻り値
.Rv -std aio_write
.Sh エラー
.Fn aio_write
システムコールは次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EAGAIN
システムリソースの制限のために要求は待ち行列に入れられませんでした。
.It Bq Er ENOSYS
.Fn aio_write
システムコールはサポートされていません。
.El
.Pp
次の状態は
.Fn aio_write
システムコールが行われたときに同期的に検出でき、
その後いつでも非同期的に検出できます。
これらが呼び出し時に検出された場合に
.Fn aio_write
は -1 を返し
.Va errno
を適切に設定します。
そうでない場合は
.Fn aio_return
システムコールが戻り値 -1 で呼び出される必要があり、
.Va errno
で返されている実際の値を判定するために
.Fn aio_error
が呼び出される必要があります。
.Pp
.Bl -tag -width Er
.It Bq Er EBADF
.Fa iocb->aio_fildes
引数が無効であるか、書込みにはオープンされていません。
.It Bq Er EINVAL
オフセット
.Fa iocb->aio_offset
が有効でない、
.Fa iocb->aio_reqprio
によって指定される優先順位が
有効な優先順位でない、または
.Fa iocb->aio_nbytes
によって指定されるバイト数が有効ではありません。
.El
.Pp
要求が正常に待ち行列に入れられたものの、
後でキャンセルされるかエラーが発生した場合、
.Fn aio_return
システムコールによって返された値は
.Xr write 2
システムコールごとのものであり、
.Fn aio_error
システムコールによって返された値は
.Xr write 2
システムコールから返されたエラーの 1 つであるか、または次の 1 つです。
.Bl -tag -width Er
.It Bq Er EBADF
.Fa iocb->aio_fildes
引数は書込みについては無効です。
.It Bq Er ECANCELED
要求は
.Fn aio_cancel
の呼び出しによって明示的にキャンセルされました。
.It Bq Er EINVAL
オフセット
.Fa iocb->aio_offset
は無効です。
.El
.Sh 関連項目
.Xr aio_cancel 2 ,
.Xr aio_error 2 ,
.Xr aio_return 2 ,
.Xr aio_suspend 2 ,
.Xr aio_waitcomplete 2 ,
.Xr aio 4
.Sh 規格
.Fn aio_write
システムコールは
.St -p1003.1
標準に適合しています。
.Sh 歴史
.Fn aio_write
システムコールは
.Fx 3.0
ではじめて登場しました。
.Sh 作者
このマニュアルページは
.An Wes Peters Aq wes@softweyr.com
が作成しました。
.Sh バグ
.Fa iocb->_aiocb_private
内の誤った情報はカーネルを混乱させる可能性があります。