が書きソケットの任意の制限のsendfile()の使用を許可?
-
18-09-2019 - |
質問
プレリュード
sendfile()
非常に有用での使用のための二つの理由
それから、 以下のコード 以上 read()
/write()
( recv()
/send()
希望の場合はそのジャイヴ)ループを実行します。
第二に、この 高速 (syscalls、実施がコピーとデバイス なし バッファーなど)上記以外の方法。
以下のコードです。より効率的です。ます。
UNIXのもの(主に)ファイルです。この醜い領域からの衝突プラトンの理論と実世界です。理解しているソケットは本質的に異なるもの以外のファイルに住む一部の装置です。しんの穴を源のLinux*BSD/ダーウィン/うOSを実装し sendfile()
なぜかについて知ることの特定の使用が制限される文書をソケット(具体的には、ストリーミングソケット).
ていただきたいと思いから---
質問
何の制限 sendfile()
このほか、先のファイル記述子されていると思いますが、ほかのソケット(ディスクファイル、またはパイプ)?
解決
根本的には、唯一のものを制限すること"を見つの文字のコードなのに".
しかし、収集する理由はないものを書、コードそれらの場合もその両方にとって必要であることが分かっデータをコピーするには、取り除くの利点 sendfile
最初の場所です。
ファイルをファイル
sendfile
, まえが必要なコピーがその他は同じページにおいては、pagecacheとしてクリーンページのソースファイルとダーティページの先ファイルです。とは思わないのpagecacheが取り扱う場合には、今ももちろん、この変更があった場合は十分な動機ファイルにパイプ
sendfile
, が必要となりコピーを問わず、遷移先であるプロセスを取得し、書き込み可能のコピーをデータです。とにかく、ほとんどの用途この場合においてmmap
.
他のヒント
記憶していることで制限導入した初期のLinux2.6(2.4を持っていないあると考えられます。
以来、2.6.17Linuxにおいては、スプライス()システムコールが似ている。より柔軟なものがやや少なめです。ライナス話題の再実施sendfileのスプライス().見 http://kerneltrap.org/node/6505