我在编程 Web 服务器 (C),它应该发送大文件。我的问题是:
两个系统调用的主要区别是什么:write
和 sendfile
。 sendfile
是否取决于套接字系统缓冲区的大小?我注意到 write
经常写得比我要求的少。
例如,如果对一个文件有很多请求:我应该打开它,复制到内存中并使用write
,还是我可以为每个客户端执行sendfile
?
提前感谢所有的回答。
最佳答案
请阅读sendfile
(2)。
sendfile()
在一个文件描述符和另一个文件描述符之间复制数据。因为这种复制是在内核中完成的,所以 sendfile()
比 read
(2) 和 write
(2) 的组合更有效,这将需要将数据传入和传出用户空间。
关于任何write
/read
/senfile
调用的返回值不保证整个数据 block 被写入/读取/发送
关于linux - linux write 和 sendfile 系统调用的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2743698/