AIO_WRITE - Linux手册页

时间:2019-08-20 17:59:51  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

aio_write-异步写入

语法

#包括

int aio_write(struct aiocb * aiocbp);

与-lrt链接。

说明

aio_write()函数将由aiocbp指向的缓冲区描述的I / O请求排队。该函数是write(2)的异步模拟。通话的论点

写(fd,buf,count)

(按顺序)对应于aiocbp指向的结构的aio_fildes,aio_buf和aio_nbytes字段。 (有关aiocb结构的说明,请参见aio(7)。)

如果未设置O_APPEND,则从绝对位置aiocbp-> aio_offset开始写入数据,而不考虑文件偏移量。如果设置了O_APPEND,则数据的写入顺序与aio_write()调用的顺序相同。调用后,未指定文件偏移量的值。

"异步"意味着该请求在排队入队后立即返回;调用返回时,写入可能已经完成,也可能尚未完成。一种使用aio_error(3)测试完成。可以通过aio_return(3)获得完成的I / O操作的返回状态。可以通过适当设置aiocbp-> aio_sigevent来获得I / O完成的异步通知。有关详细信息,请参见sigevent(7)。

如果定义了_POSIX_PRIORITIZED_IO,并且此文件支持该文件,则异步操作的提交优先级等于调用进程的优先级减去aiocbp-> aio_reqprio。

字段aiocbp-> aio_lio_opcode被忽略。

超出最大偏移量的数据不会写入常规文件。

返回值

成功时,将返回0。错误时,请求不排队,返回-1,并正确设置errno。如果仅在以后检测到错误,则将通过aio_return(3)(返回状态-1)和aio_error(3)(错误状态-无论在errno中是什么,例如EBADF)报告该错误。

错误说明

EAGAIN
资源不足。
EBADF
aio_fildes不是一个有效的文件描述符,可以打开以进行写入。
EFBIG
该文件是常规文件,我们要写入至少一个字节,但是起始位置等于或大于此文件的最大偏移量。
EINVAL
aio_offset,aio_reqprio和aio_nbytes中的一个或多个无效。
ENOSYS
未实现aio_write()。

版本

从glibc 2.1开始,可以使用aio_write()函数。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
aio_write()Thread safetyMT-Safe

遵循规范

POSIX.1-2001,POSIX.1-2008。

备注

在使用前将控制块清零是个好主意。在写操作进行期间,不得更改控制块。在操作期间不得访问正在写出的缓冲区,否则可能会导致不确定的结果。涉及的存储区域必须保持有效。

指定相同aiocb结构的同时I / O操作会产生不确定的结果。

另外参见

aio_cancel(3),aio_error(3),aio_fsync(3),aio_read(3),aio_return(3),aio_suspend(3),lio_listio(3),aio(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/