【问题标题】:kqueue() and O_NONBLOCKkqueue() 和 O_NONBLOCK
【发布时间】:2012-03-18 03:56:12
【问题描述】:

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

【问题讨论】:

    标签: io kqueue


    【解决方案1】:

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

    没有。

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

    是的。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-12
        • 2012-12-27
        • 1970-01-01
        相关资源
        最近更新 更多