AIO_READ - Linux手册页
Linux程序员手册 第3部分
更新日期: 2020-06-09
名称
aio_read-异步读取
语法
#包括
诠释aio_read(struct aiocb * aiocbp);
与-lrt链接。
说明
aio_read()函数将aiocbp指向的缓冲区描述的I / O请求排队。此函数是read(2)的异步模拟。通话的论点
读取(fd,buf,count)
(按顺序)对应于aiocbp指向的结构的aio_fildes,aio_buf和aio_nbytes字段。 (有关aiocb结构的说明,请参见aio(7)。)
无论文件偏移量是多少,都从绝对位置aiocbp-> aio_offset开始读取数据。调用后,未指定文件偏移量的值。
"异步"意味着该请求在排队入队后立即返回;通话返回时,读取可能已经完成,也可能尚未完成。一种使用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不是有效的文件描述符,可以读取。
- EINVAL
- aio_offset,aio_reqprio或aio_nbytes中的一个或多个无效。
- ENOSYS
- 未实现aio_read()。
- EOVERFLOW
- 该文件是常规文件,我们在文件结束之前开始读取,并且需要至少一个字节,但是起始位置已超过此文件的最大偏移量。
版本
从glibc 2.1开始,可以使用aio_read()函数。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
aio_read() | Thread safety | MT-Safe |
遵循规范
POSIX.1-2001,POSIX.1-2008。
备注
在使用之前将控制块清零是个好主意。进行读取操作时,不得更改控制块。在操作期间不得访问正在读取的缓冲区,否则可能会导致不确定的结果。涉及的存储区域必须保持有效。
指定相同aiocb结构的同时I / O操作会产生不确定的结果。
示例
参见aio(7)。
另外参见
aio_cancel(3),aio_error(3),aio_fsync(3),aio_return(3),aio_suspend(3),aio_write(3),lio_listio(3),aio(7)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。