错误说明

EAGAIN
在任何指示的操作完成之前,呼叫超时。
EINTR
呼叫以信号(可能是我们正在等待的操作之一的完成信号)结束。参见signal(7)。
ENOSYS
未实现aio_suspend()。

版本

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

出版信息

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

返回值

如果此函数在aiocb_list中指定的I / O请求之一完成后返回,则返回0。否则,返回-1,并设置errno表示错误。

说明

aio_suspend()函数将挂起调用线程,直到发生以下情况之一:

*
列表aiocb_list中的一个或多个异步I / O请求已完成。
*
信号已传递。
*
超时不为NULL,并且指定的时间间隔已经过去。 (有关timespec结构的详细信息,请参见nanosleep(2)。)

nitems参数指定aiocb_list中的项目数。由aiocb_list指向的列表中的每个项目都必须为NULL(然后被忽略),或指向使用aio_read(3),aio_write(3)或lio_listio(3)在其上启动I / O的控制块的指针。 (有关aiocb结构的说明,请参见aio(7)。)

如果支持CLOCK_MONOTONIC,则此时钟用于测量超时间隔(请参见clock_gettime(3))。

属性

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

InterfaceAttributeValue
aio_suspend()Thread safetyMT-Safe

语法

#include <aio.h>

int aio_suspend(const struct aiocb * const aiocb_list[],
                int nitems, const struct timespec *timeout);

Link with -lrt.

备注

可以使用指定零时间间隔的非NULL超时来实现轮询。

如果在调用aio_suspend()时aiocb_list中指定的一个或多个异步I / O操作已经完成,则该调用将立即返回。

要确定从aio_suspend()成功返回后哪些I / O操作已完成,请使用aio_error(3)扫描aiocb_list指向的aiocb结构的列表。

AIO_SUSPEND - Linux手册页

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

另外参见

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

名称

aio_suspend-等待异步I / O操作或超时

遵循规范

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

BUGS

aio_suspend()的glibc实现不是异步信号安全的,违反了POSIX.1的要求。

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