doc/ja_JP.eucJP/man/man2/aio_write.2
Kazuo Horikawa f6ffff974d Remove whitespace at eol.
Remove extraneous .Pp before and/or after .Sh.
2001-07-29 05:15:42 +00:00

199 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.4.2.4 2001/07/22 12:06:50 dd Exp %
.\"
.\" $FreeBSD: doc/ja_JP.eucJP/man/man2/aio_write.2,v 1.3 2001/05/14 01:08:20 horikawa Exp $
.Dd June 2, 1999
.Dt AIO_WRITE 2
.Os
.Sh 名称
.Nm aio_write
.Nd ファイルへの非同期書込み (REALTIME)
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <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_read
呼び出しの前に 0 にする必要があります。
.Pp
要求が待ち行列に入れられた後、要求が完了するまでは
非同期入出力制御ブロック構造体、
またはバッファの内容を修正することは許されません。
.Pp
.Fa iocb->aio_offset
内のファイルオフセットが
.Fa iocb->aio_fildes
用のオフセット最大を越える場合は入出力は行われません。
.Sh 戻り値
.\".Rv -std aio_write
.Fn aio_write
関数は成功すると値 0 を返します。それ以外の場合は値 -1 が
返され、エラーを示すグローバル変数
.Ar errno
が設定されます。
.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_erro
が呼び出される必要があります。
.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 規格
.Fn aio_write
.St -p1003.2
標準に準拠しています。
.Sh 歴史
.Nm
関数は
.Fx 3.0
ではじめて登場しました。
.Sh 作者
このマニュアルページは
.An Wes Peters Aq wes@softweyr.com
が作成しました。
.Sh バグ
非同期入出力操作はこのバージョンではキャンセルできません。
.Fa iocb->_aiocb_private
内の誤った情報はカーネルを混乱させる可能性があります。