2

如果你使用 kqueue(),你应该在你的文件描述符上设置 O_NONBLOCK 吗?换句话说,无论是否设置了 O_NONBLOCK,kqueue() 是否保证对就绪文件描述符的下一个 I/O 操作不会阻塞?

4

2 回答 2

3

如果你使用 kqueue(),你应该在你的文件描述符上设置 O_NONBLOCK 吗?

没有。

换句话说,无论是否设置了 O_NONBLOCK,kqueue() 是否保证对就绪文件描述符的下一个 I/O 操作不会阻塞?

是的。

于 2012-10-26T10:17:39.367 回答
2

你不需要。但是,我通常会进行完整性检查。这使得 read() 之类的操作返回 -1 并将 errno 设置为 EWOULDBLOCK。我宁愿得到一个 EWOULDBLOCK 并且知道我的 kqueue 实现是错误的,而不是由于未知原因导致 read() 调用阻塞(因此我的程序冻结)。

于 2013-12-06T03:22:31.600 回答