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