2
A
回答
6
它的工作原理非常相似send()
:如果套接字設置爲O_NONBLOCK
和操作會阻塞,立即返回sendfile()
並將errno
設置爲EAGAIN
。在這種情況下,你必須等待一段時間然後再試一次(也許使用像select()
這樣的函數來知道它準備好的時間)。
還要記住,即使成功,它也可能不會在單個函數調用中寫入所有請求的字節。始終檢查返回值:
如果傳輸成功,則寫入out_fd的字節數將返回爲 。出錯時,返回-1,並且適當地設置errno。
您還可以看看man page for sendfile()
相關問題
- 1. 非阻塞套接字
- 2. 處理'非阻塞'套接字連接
- 3. Android非阻塞從套接字讀取
- 4. SSL和NIO非阻塞套接字
- 5. 關閉非阻塞套接字通道
- 6. OCaml:Lwt和非阻塞套接字
- 7. 服務器的非阻塞套接字
- 8. 非阻塞套接字,錯誤總是
- 9. recv與非阻塞套接字
- 10. 套接字:非阻塞關機(SHUT_WR)?
- 11. 非阻塞套接字和io
- 12. C/C++套接字和非阻塞recv()
- 13. 加速非阻塞Unix套接字(C++)
- 14. 帶選擇的非阻塞套接字
- 15. 帶輪詢的非阻塞套接字
- 16. 非阻塞套接字和發送()
- 17. 多線程與非阻塞套接字
- 18. php socket_write通過阻塞和非阻塞套接字
- 19. epoll +非阻塞套接字慢於阻塞+超時?
- 20. 使用select與阻塞和非阻塞套接字的影響
- 21. 連接完成前recv在非阻塞TCP套接字上的行爲
- 22. 非阻塞套接字連接總是成功?
- 23. 嵌套Socket阻塞非阻塞SocketHi
- 24. Perl無阻塞套接字
- 25. 選擇()與非阻塞I/O和選擇()與阻塞I/O在套接字
- 26. SCTP套接字上的關閉調用是阻塞還是非阻塞?
- 27. 使用多個套接字,是非阻塞或阻塞與選擇更好?
- 28. Java中的阻塞套接字寫入和非阻塞套接字寫入有什麼區別?
- 29. SSL上的非阻塞套接字連接?
- 30. 在非阻塞套接字連接中,select()總是返回1
略微膨脹:如果'的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