kqueue()和O_NONBLOCK

时间:2012-03-18 03:56:12

标签: io kqueue

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

2 个答案:

答案 0 :(得分:3)

  

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

不。

  

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

是的。

答案 1 :(得分:2)

你不需要。但是,我通常会做一个健全检查。这使得read()之类的操作返回-1并将errno设置为EWOULDBLOCK。我更愿意得到一个EWOULDBLOCK并且知道我的kqueue实现是错误的而不是read()调用阻塞(因此我的程序冻结)原因不明。