【发布时间】:2018-08-31 20:19:31
【问题描述】:
在使用带有文件描述符的 POSIX AIO 时,是否需要在 open() 中使用 O_NONBLOCK 打开文件描述符?
在 APUE 中,我没有发现它明确表示是或否,但在一个示例中,我没有发现在 open() 中使用 O_NONBLOCK 打开这样的文件描述符。
谢谢。
【问题讨论】:
-
是什么让你认为它应该是?
O_NONBLOCK用于非阻塞 IO。 Linux 内核不支持 Btw AIO。 -
简短的回答是“否”。您需要一个长答案吗?
-
@JonathanLeffler 是的。我不是很清楚他们的关系。
-
@Ivan - 你确定内核缺少 AIO 吗?我可以很容易地找到它的手册页;例如,AIO(7)。它在第 7 节杂项而不是第 3 节库函数下,这有点不寻常。
-
@jww Linux 有
io_setup、io_getevents等。但这些并没有实现 POSIX AIO 所需的一切。aio_*函数是在用户空间中实现的,因此它们是不一致的(例如,不是异步信号安全的)。