問題タブ [sendfile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unix - ソケットへの書き込みは、sendfile() システムコールの任意の制限ですか?
前奏曲
sendfile()
次の 2 つの理由から、非常に便利な syscall です。
まず、/ (ジャイブを好む場合は/ ) ループよりもコードが少なくて済みます。
第二に、前述の方法よりも高速です(システムコールが少ない、実装がバッファなしでデバイス間でコピーされるなど)。read()
write()
recv()
send()
コードが少ない。もっと効率的。素晴らしい。
UNIX では、すべてが (ほとんどの場合) ファイルです。これは、プラトニックな理論と現実世界の実践が衝突した醜い領域です。ソケットは、一部のデバイスに存在するファイルとは根本的に異なることを理解しています。Linux/*BSD/Darwin/OS が実装sendfile()
するものは何でも、この特定のシステムコールがソケット (具体的にはストリーミング ソケット) への書き込みに制限されている理由を知るために、ソースを掘り下げていません。
ただ知りたいだけです...
質問
sendfile()
宛先ファイル記述子をソケット以外のもの (ディスク ファイルやパイプなど) にすることを制限しているのは何ですか?
linux - 2つのmmapファイルでのsendfile()の使用(Linux)
sendfile()linux syscallを使用して、ファイルの一部を1つのmmapedファイルから別のmmapedファイルに送信できますか?
linux - Linux書き込みとsendfile syscallの違い
大きなファイルを送信する必要があるWebサーバー(C)をプログラミングしています。私の質問は次のとおりです。2 つのシステムコールの主な違いは何ですか:write
とsendfile
. sendfile
ソケットシステムバッファのサイズに依存しますか? write
私が要求したよりも書き込みが少ないことが多いことに気付きました。
たとえば、1 つのファイルに対して多くの要求があった場合: ファイルを開いてメモリにコピーして使用する必要がありますか?それともクライアントごとwrite
に行うことができますか?sendfile
すべての回答に感謝します。
terminology - 用語:「ゼロコピー」の反対?
Linux のゼロコピー システム コールである sendfile() を使用するように変換したコードのベンチマークを行っています。sendfile() が置き換える従来の read()/write() ループの用語は何ですか? つまり、私たちのレポートでは、「zerocopy は X ミリ秒、??? は Y ミリ秒」と言いたいのです。どの単語/フレーズを使用すればよいですか?
c - 2つの通常のファイルを含むsendfile()の引数が無効です
sendfile()
Linux 2.6.32でシステムコールをテストして、 2つの通常のファイル間でデータをゼロコピーしようとしています。私が理解している限り、これは機能するはずです。2.6.22以降、sendfile()
を使用して実装されておりsplice()
、入力ファイルと出力ファイルの両方を通常のファイルまたはソケットにすることができます。
以下はその内容ですsendfile_test.c
:
そして、私が次のコマンドを実行しているとき:
出力は
そして走っているとき
出力には次のものが含まれます
私は何が間違っているのですか?
django - Django ダウンロード ファイルが空です
サーバーから自分のマシンに特定のファイルをダウンロードするための簡単な関数を書いています。ファイルは、その ID で表される一意です。ファイルは正しく検索され、ダウンロードは完了しますが、ダウンロードされたファイル (サーバー上のファイルとして名前が付けられています) は空です。私のダウンロード機能は次のようになります。
どこが間違っているのでしょうか? ありがとう!
ruby-on-rails - send_file は空のファイルを送信するだけです
xml ファイルをダウンロードする方法を探しています。私が使う:
しかし、これは常に空のファイルをダウンロードします。ファイル自体には 16 KB のデータが含まれています...
何故ですか?
前地
ruby-on-rails - send_fileがいつ完了したかを知る方法
ダウンロードするデータのコンテンツの準備に時間がかかるため、ユーザーがリクエストを送信したときに「ダウンロードするファイルを準備しています」というメッセージを表示したい
次に、ファイルの準備ができたら、 send_file を使用してデータを送信します
完了したら、メッセージをクリアする必要があります
どうもありがとう
c - sendfile() を使用すると、in_fd がいつ EOF になるかを知ることができますか?
Linux システム コール のマニュアル ページをsendfile
読んで、呼び出し元のプログラムがいつin_fd
EOFにあるかを知ることができるかどうか疑問に思っています。おそらく、これは戻り値 0 によって通知される可能性がありますが、これは戻り値 0 が実際に何を意味するのかという問題につながります。sendfile
のような場合write
、戻り値 0 は 0 バイトがコピーされたことを意味します。しかし、sendfile
が のような場合read
、戻り値 0 は EOF を意味します。を使用するためにからin_fd
にコピーするバイト数を事前に知っておく必要がありますか? 0 を返すとはどういう意味ですか?out_fd
sendfile
sendfile
linux - Linuxsendfileソース
sendfile関数のソースはどこで入手できますか?カーネルソースで見つかりません...