aio_write – linux man page
August 26th, 2009
| Tags: aio_cancel, aio_error, aio_fsync, aio_read, aio_return, aio_suspend, aio_write
aio_write – asynchronous write
USAGE
#include <aio.h>
int aio_write(struct aiocb *aiocbp);
DESCRIPTION
The aio_write() function requests an asynchronous "n = write(fd, buf,
count)" with fd, buf, count given by aiocbp->aio_fildes,
aiocbp->aio_buf, aiocbp->aio_nbytes, respectively. The return status n
can be retrieved upon completion using aio_return(3).
If O_APPEND is not set, the data is written starting at the absolute
file offset aiocbp->aio_offset, regardless of the current file posi-
tion. If O_APPEND is set, the data is written at the end of the file.
After this request, the value of the current file position is unspeci-
fied.
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).
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.
RETURN VALUE
On success, 0 is returned. On error the request is not enqueued, -1 is
returned, and errno is set appropriately. If an error is first detected
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).
ERRORS
EAGAIN Out of resources.
EBADF aio_fildes is not a valid file descriptor open for writing.
EFBIG The file is a regular file, we want to write at least one byte,
but the starting position is at or beyond the maximum offset for
this file.
EINVAL One or more of aio_offset, aio_reqprio, aio_nbytes are invalid.
ENOSYS This function is not supported.
NOTES
It is a good idea to zero out the control block before use. This con-
trol block must not be changed while the write operation is in
progress. The buffer area being written out must not be accessed dur-
ing the operation or undefined results may occur. The memory areas
involved must remain valid.
CONFORMING TO
POSIX.1-2001
Leave a comment
