aio_write - asynchronous write
#include <aio.h>
int aio_write(struct aiocb *aiocbp);
The aio_write() function queues the I/O request
described by the buffer pointed to by aiocbp
. This function is
the asynchronous analog of write(2). The arguments of
the call
write(fd, buf, count)
correspond (in order) to the fields aio_fildes
,
aio_buf
, and aio_nbytes
of the structure pointed to by
aiocbp
. (See aio(7) for a description of the
aiocb
structure.)
If O_APPEND is not set, the data is written starting
at the absolute position aiocbp->aio_offset
, regardless of
the file offset. If O_APPEND is set, data is written at
the end of the file in the same order as aio_write()
calls are made. After the call, the value of the file offset is
unspecified.
The "asynchronous" means that this call returns as soon as the
request has been enqueued; the write may or may not have completed when
the call returns. One tests for completion using
aio_error(3). The return status of a completed I/O
operation can be obtained aio_return(3). Asynchronous
notification of I/O completion can be obtained by setting
aiocbp->aio_sigevent
appropriately; see
sigevent(3type) for details.
If _POSIX_PRIORITIZED_IO is defined, and this file
supports it, then the asynchronous operation is submitted at a priority
equal to that of the calling process minus
aiocbp->aio_reqprio
.
The field aiocbp->aio_lio_opcode
is ignored.
No data is written to a regular file beyond its maximum offset.
On success, 0 is returned. On error, the request is not enqueued, -1
is returned, and errno
is set to indicate the error. If an
error is detected only later, it will be reported via
aio_return(3) (returns status -1) and
aio_error(3) (error status—whatever one would have
gotten in errno
, such as EBADF).
aio_cancel(3), aio_error(3), aio_fsync(3), aio_read(3), aio_return(3), aio_suspend(3), lio_listio(3), aio(7)