我编程webserver(C),它应该发送大文件.我的问题是:
两个系统调用的主要区别是:write和sendfile. sendfile是否依赖于套接字系统缓冲区的大小?我注意到写入经常写的少于我要求的.
例如,如果对一个文件有很多请求:我应该打开它,复制到内存中并使用write,或者我可以为每个客户端执行sendfile吗?
提前感谢所有答案.
解决方法:
请阅读sendfile(2).
sendfile()在一个文件描述符和另一个文件描述符之间复制数因为这种复制是在内核中完成的,所以sendfile()比read(2)和write(2)的组合更有效,这需要将数据传入和传出用户空间.
关于返回值,任何write / read / senfile调用都不保证写入/读取/发送整个数据块