如果使用kqueue(),是否應該在文件描述符上設置O_NONBLOCK?換句話說,無論是否設置了O_NONBLOCK,kqueue()是否可以保證就緒文件描述符的下一個I/O操作不會被阻塞?kqueue()和O_NONBLOCK
2
A
回答
2
如果使用kqueue(),您應該在文件描述符上設置O_NONBLOCK嗎?
沒有。
換句話說,無論是否設置了O_NONBLOCK,kqueue()是否可以保證就緒文件描述符上的下一個I/O操作不會被阻塞?
是的。
1
你不需要。不過,我通常會作爲一個健康檢查。這使像read()這樣的操作返回-1並將errno設置爲EWOULDBLOCK。我寧願得到一個EWOULDBLOCK,並且知道我的kqueue實現比read()調用阻塞(並因此導致我的程序凍結)出於未知原因。
相關問題
- 1. 問題與O_NONBLOCK管
- 2. O_NONBLOCK SOCK_STREAM限於8192
- 3. aio_write()和O_NONBLOCK write()之間的區別
- 4. kQueue目錄監控
- 5. KQueue可可包裝
- 6. C http O_NONBLOCK模式問題?
- 7. kqueue NOTE_EXIT不起作用
- 8. kqueue有什麼限制?
- 9. 常規文件上的Kqueue
- 10. Clozure CL未找到外部變量「O_NONBLOCK」
- 11. C++中的等價open(文件,O_NONBLOCK)
- 12. select,epoll,kqueue和evport之間的根本區別是什麼?
- 13. 使用kqueue輪詢特殊情況
- 14. 什麼是「可讀」(的kqueue/epoll的)
- 15. bsd內核用戶空間事件kqueue
- 16. kqueue的EV_RECEIPT究竟是什麼?
- 17. 處理kqueue信號時獲取siginfo_t
- 18. Kqueue返回EVFILT_READ和EVFILT_WRITE,但我安裝了單獨的(ident,filt)對
- 19. Linux客戶端套接字:連接前無法設置O_NONBLOCK?
- 20. Linux fifo(命名管道)O_NONBLOCK中斷管道
- 21. 套接字超時並刪除O_NONBLOCK選項
- 22. 避免在不使用O_NONBLOCK時發送阻止
- 23. 是否有一個相當於select()的「errorfds」集合的kqueue()/ kevent()?
- 24. 有什麼辦法可以用kqueue/kevent模擬epoll_wait嗎?
- 25. 使用select/poll/kqueue/kevent觀看新文件的目錄
- 26. libevent kqueue在fd上無法正常工作從zmq_getsockopt()返回
- 27. 在macOS上運行Crystal時出現kqueue警告警告Sierra
- 28. 使用kqueue響應多個事件類型
- 29. iOS選擇與kqueue/kevent對比mach_wait_until調度
- 30. Kqueue是否需要像epoll一樣接近?
很好的建議,謝謝。 – 2013-12-06 18:02:49