AIO_WRITE - Linux手册页
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)。
Interface | Attribute | Value |
aio_write() | Thread safety | MT-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/。