属性

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

InterfaceAttributeValue
aio_read()Thread safetyMT-Safe
AIO_READ - Linux手册页

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

名称

aio_read-异步读取

版本

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

返回值

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

语法

#包括

诠释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被忽略。

无法从常规文件中读取超出其最大偏移量的数据。

出版信息

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

备注

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

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

示例

参见aio(7)。

错误说明

EAGAIN
资源不足。
EBADF
aio_fildes不是有效的文件描述符,可以读取。
EINVAL
aio_offset,aio_reqprio或aio_nbytes中的一个或多个无效。
ENOSYS
未实现aio_read()。
EOVERFLOW
该文件是常规文件,我们在文件结束之前开始读取,并且需要至少一个字节,但是起始位置已超过此文件的最大偏移量。

另外参见

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

遵循规范

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

日期:2019-08-20 17:59:51 来源:oir作者:oir