AIO_SUSPEND - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
aio_suspend-等待异步I / O操作或超时
语法
#include <aio.h> int aio_suspend(const struct aiocb * const aiocb_list[], int nitems, const struct timespec *timeout); Link with -lrt.
说明
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))。
返回值
如果此函数在aiocb_list中指定的I / O请求之一完成后返回,则返回0。否则,返回-1,并设置errno表示错误。
错误说明
- EAGAIN
- 在任何指示的操作完成之前,呼叫超时。
- EINTR
- 呼叫以信号(可能是我们正在等待的操作之一的完成信号)结束。参见signal(7)。
- ENOSYS
- 未实现aio_suspend()。
版本
从glibc 2.1开始,可以使用aio_suspend()函数。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
aio_suspend() | Thread safety | MT-Safe |
遵循规范
POSIX.1-2001,POSIX.1-2008。
备注
可以使用指定零时间间隔的非NULL超时来实现轮询。
如果在调用aio_suspend()时aiocb_list中指定的一个或多个异步I / O操作已经完成,则该调用将立即返回。
要确定从aio_suspend()成功返回后哪些I / O操作已完成,请使用aio_error(3)扫描aiocb_list指向的aiocb结构的列表。
BUGS
aio_suspend()的glibc实现不是异步信号安全的,违反了POSIX.1的要求。
另外参见
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)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。