【问题标题】:Differnce between linux write and sendfile syscalllinux write 和 sendfile 系统调用的区别
【发布时间】:2011-02-14 04:21:08
【问题描述】:

我正在编程网络服务器 (C),它应该发送大文件。我的问题是: 两个系统调用的主要区别是什么:writesendfilesendfile 是否取决于套接字系统缓冲区的大小?我注意到write 经常写的比我要求的要少。

例如,如果对一个文件有很多请求:我应该打开它,复制到内存中并使用write,或者我可以为每个客户端执行sendfile

提前感谢所有答案。

【问题讨论】:

    标签: linux sockets sendfile


    【解决方案1】:

    请阅读sendfile(2)。

    sendfile() 在一个文件描述符和另一个文件描述符之间复制数据。因为这种复制是在内核中完成的,sendfile()read(2) 和 write(2) 的组合更有效,后者需要在用户空间和用户空间之间传输数据。

    关于任何write/read/senfile调用的返回值都不能保证整个数据块被写入/读取/发送

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 2010-12-11
      • 2014-03-20
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多