3

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

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

提前感谢所有答案。

4

1 回答 1

6

请阅读sendfile(2)。

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

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

于 2010-04-30T10:13:47.103 回答