【发布时间】:2012-03-18 03:56:12
【问题描述】:
如果你使用 kqueue(),你应该在你的文件描述符上设置 O_NONBLOCK 吗?也就是说,kqueue() 是否保证对就绪文件描述符的下一次 I/O 操作不会阻塞,不管是否设置了 O_NONBLOCK?
【问题讨论】:
如果你使用 kqueue(),你应该在你的文件描述符上设置 O_NONBLOCK 吗?也就是说,kqueue() 是否保证对就绪文件描述符的下一次 I/O 操作不会阻塞,不管是否设置了 O_NONBLOCK?
【问题讨论】:
如果你使用 kqueue(),你应该在你的文件描述符上设置 O_NONBLOCK 吗?
没有。
也就是说,kqueue() 是否保证对就绪文件描述符的下一个 I/O 操作不会阻塞,无论是否设置了 O_NONBLOCK?
是的。
【讨论】:
你不需要。但是,我通常会进行完整性检查。这使得 read() 之类的操作返回 -1 并将 errno 设置为 EWOULDBLOCK。我宁愿得到一个 EWOULDBLOCK 并且知道我的 kqueue 实现是错误的,而不是由于未知原因而让 read() 调用阻塞(因此我的程序冻结)。
【讨论】: