AIO_WRITE(3) Linux Programmer s Manual AIO_WRITE(3)
NAME aio_write - asynchronous write
SYNOPSIS #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
SEE ALSO aio_cancel(3), aio_error(3), aio_fsync(3), aio_read(3), aio_return(3), aio_suspend(3)