3
編程web服務器(C),它應該發送大文件。我的問題是: 兩個系統調用的主要區別是:write
和sendfile
。 sendfile
取決於套接字系統緩衝區的大小?我注意到write
通常寫得比我要求的要少。Linux寫入和發送文件之間的區別系統調用
例如,如果得到了一個文件的許多請求:我應該打開它,複製到內存和使用write
,或者我可以爲每個客戶端做sendfile
?
在此先感謝所有答案。
編程web服務器(C),它應該發送大文件。我的問題是: 兩個系統調用的主要區別是:write
和sendfile
。 sendfile
取決於套接字系統緩衝區的大小?我注意到write
通常寫得比我要求的要少。Linux寫入和發送文件之間的區別系統調用
例如,如果得到了一個文件的許多請求:我應該打開它,複製到內存和使用write
,或者我可以爲每個客戶端做sendfile
?
在此先感謝所有答案。
請閱讀sendfile
(2)。
sendfile()
在一個文件描述符和另一個文件描述符之間複製數據。由於這種複製是在內核中完成的,所以sendfile()
比read
(2)和write
(2)的組合更高效,這將需要向用戶空間傳輸數據和從用戶空間傳輸數據。
關於返回值的任何write
/read
/senfile
調用不保證數據的整個數據塊寫入/讀取/發送