语法

#include <aio.h>

int lio_listio(int mode, struct aiocb *const aiocb_list[],
               int nitems, struct sigevent *sevp);

Link with -lrt.

名称

lio_listio-启动I / O请求列表

备注

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

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

版本

从glibc 2.1开始,lio_listio()函数可用。

LIO_LISTIO - Linux手册页

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

说明

lio_listio()函数启动数组aiocb_list描述的I / O操作列表。

模式操作具有以下值之一:

LIO_WAIT
呼叫将阻塞,直到所有操作完成。 sevp参数将被忽略。
LIO_NOWAIT
I / O操作排队等待处理,并且调用立即返回。当所有I / O操作完成时,将按照sevp参数指定的方式进行异步通知;有关详细信息,请参见sigevent(7)。如果sevp为NULL,则不会发生异步通知。

aiocb_list参数是一个指向描述I / O操作的aiocb结构的指针的数组。这些操作以未指定的顺序执行。 nitems参数指定数组aiocb_list的大小。 aiocb_list中的空指针将被忽略。

在aiocb_list中的每个控制块中,aio_lio_opcode字段指定要启动的I / O操作,如下所示:

LIO_READ
启动读取操作。该操作已排队,就像对指定此控制块的aio_read(3)的调用一样。
LIO_WRITE
启动写操作。该操作已排队,就像对指定此控制块的aio_write(3)的调用一样。
LIO_NOP
忽略此控制块。

每个控制块中的其余字段具有与aio_read(3)和aio_write(3)相同的含义。每个控制块的aio_sigevent字段可用于为各个I / O操作指定通知(请参见sigevent(7))。

出版信息

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

属性

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

InterfaceAttributeValue
lio_listio()Thread safetyMT-Safe

另外参见

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

返回值

如果mode为LIO_NOWAIT,则如果所有I / O操作均已成功排队,则lio_listio()返回0。否则,返回-1,并设置errno表示错误。

如果mode为LIO_WAIT,则在所有I / O操作成功完成后,lio_listio()返回0。否则,返回-1,并设置errno表示错误。

lio_listio()的返回状态仅提供有关调用本身的信息,而不提供有关各个I / O操作的信息。一个或多个I / O操作可能会失败,但这不会阻止其他操作完成。可以使用aio_error(3)确定aiocb_list中各个I / O操作的状态。操作完成后,可以使用aio_return(3)获得其返回状态。单独的I / O操作可能会由于aio_read(3)和aio_write(3)中所述的原因而失败。

错误说明

lio_listio()函数可能由于以下原因而失败:

EAGAIN
资源不足。
EAGAIN
Nitems指定的I / O操作数将导致超出限制AIO_MAX。
EINTR
模式为LIO_WAIT,并且在所有I / O操作完成之前捕获了信号;参见signal(7)。 (这甚至可能是用于异步I / O完成通知的信号之一。)
EINVAL
模式无效,或者nitems超过了限制AIO_LISTIO_MAX。
EIO
aiocb_list指定的其他一项操作失败。应用程序可以使用aio_return(3)检查每个操作的状态。

如果lio_listio()失败,并显示错误EAGAIN,EINTR或EIO,则可能已启动了aiocb_list中的某些操作。如果lio_listio()由于任何其他原因失败,则没有任何I / O操作已启动。

遵循规范

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

日期:2019-08-20 18:00:47 来源:oir作者:oir