2
A
回答
6
它的工作原理非常相似send()
:如果套接字設置爲O_NONBLOCK
和操作會阻塞,立即返回sendfile()
並將errno
設置爲EAGAIN
。在這種情況下,你必須等待一段時間然後再試一次(也許使用像select()
這樣的函數來知道它準備好的時間)。
還要記住,即使成功,它也可能不會在單個函數調用中寫入所有請求的字節。始終檢查返回值:
如果傳輸成功,則寫入out_fd的字節數將返回爲 。出錯時,返回-1,並且適當地設置errno。
您還可以看看man page for sendfile()
相關問題
- 1. 阻塞套接字性能與非阻塞套接字
- 2. 非阻塞套接字
- 3. pyzmq非阻塞套接字
- 4. 非阻塞python套接字
- 5. PHP非阻塞套接字
- 6. 當發送操作在非阻塞套接字完成了嗎?
- 7. 在阻塞連接之後設置非阻塞的套接字
- 8. 非阻塞服務器套接字(linux)
- 9. 加速非阻塞Unix套接字(C++)
- 10. 關閉非阻塞套接字通道
- 11. 選擇非阻塞套接字
- 12. Python中的非阻塞套接字?
- 13. OCaml:Lwt和非阻塞套接字
- 14. SSL和NIO非阻塞套接字
- 15. 帶輪詢的非阻塞套接字
- 16. recv與非阻塞套接字
- 17. 多線程與非阻塞套接字
- 18. 簡單套接字非阻塞I/O
- 19. Android非阻塞從套接字讀取
- 20. 非阻塞套接字和發送()
- 21. 非阻塞套接字,錯誤總是
- 22. C/C++套接字和非阻塞recv()
- 23. c中的非阻塞套接字
- 24. 服務器的非阻塞套接字
- 25. 非阻塞套接字和io
- 26. 非阻塞式TCP套接字編程
- 27. 套接字:非阻塞關機(SHUT_WR)?
- 28. 帶選擇的非阻塞套接字
- 29. 使用select與阻塞和非阻塞套接字的影響
- 30. php socket_write通過阻塞和非阻塞套接字
略微膨脹:如果'的sendfile()'返回一個值> 0,那麼多少個字節現在已經成功發送 - 有沒有必要等待完成。 「非阻塞」並不意味着「異步」。 – caf 2009-12-20 21:09:15
只需確認:噹噹前塊已被刷新時,select()將報告套接字爲可寫(FD_ISSET()== true)。然後你需要再次調用sendfile(),但保留一個新的偏移量。 – Leolo 2010-12-15 16:47:50
@caf:當* input *文件描述符被阻塞時會發生什麼? – 2013-09-10 20:03:16