問題タブ [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.

0 投票する
2 に答える
534 参照

unix - ソケットへの書き込みは、sendfile() システムコールの任意の制限ですか?

前奏曲

sendfile()次の 2 つの理由から、非常に便利な syscall です。

まず、/ (ジャイブを好む場合は/ ) ループよりもコードが少なくて済みます。 第二に、前述の方法よりも高速です(システムコールが少ない、実装がバッファなしでデバイス間でコピーされるなど)。read()write()recv()send()

コードが少ない。もっと効率的。素晴らしい。

UNIX では、すべてが (ほとんどの場合) ファイルです。これは、プラトニックな理論と現実世界の実践が衝突した醜い領域です。ソケットは、一部のデバイスに存在するファイルとは根本的に異なることを理解しています。Linux/*BSD/Darwin/OS が実装sendfile()するものは何でも、この特定のシステムコールがソケット (具体的にはストリーミング ソケット) への書き込みに制限されている理由を知るために、ソースを掘り下げていません。

ただ知りたいだけです...

質問

sendfile()宛先ファイル記述子をソケット以外のもの (ディスク ファイルやパイプなど) にすることを制限しているのは何ですか?

0 投票する
1 に答える
781 参照

linux - 2つのmmapファイルでのsendfile()の使用(Linux)

sendfile()linux syscallを使用して、ファイルの一部を1つのmmapedファイルから別のmmapedファイルに送信できますか?

0 投票する
1 に答える
1521 参照

linux - Linux書き込みとsendfile syscallの違い

大きなファイルを送信する必要があるWebサーバー(C)をプログラミングしています。私の質問は次のとおりです。2 つのシステムコールの主な違いは何ですか:writesendfile. sendfileソケットシステムバッファのサイズに依存しますか? write私が要求したよりも書き込みが少ないことが多いことに気付きました。

たとえば、1 つのファイルに対して多くの要求があった場合: ファイルを開いてメモリにコピーして使用する必要がありますか?それともクライアントごとwriteに行うことができますか?sendfile

すべての回答に感謝します。

0 投票する
3 に答える
340 参照

terminology - 用語:「ゼロコピー」の反対?

Linux のゼロコピー システム コールである sendfile() を使用するように変換したコードのベンチマークを行っています。sendfile() が置き換える従来の read()/write() ループの用語は何ですか? つまり、私たちのレポートでは、「zerocopy は X ミリ秒、??? は Y ミリ秒」と言いたいのです。どの単語/フレーズを使用すればよいですか?

0 投票する
1 に答える
3269 参照

c - 2つの通常のファイルを含むsendfile()の引数が無効です

sendfile()Linux 2.6.32でシステムコールをテストして、 2つの通常のファイル間でデータをゼロコピーしようとしています。私が理解している限り、これは機能するはずです。2.6.22以降、sendfile()を使用して実装されておりsplice()、入力ファイルと出力ファイルの両方を通常のファイルまたはソケットにすることができます。

以下はその内容ですsendfile_test.c

そして、私が次のコマンドを実行しているとき:

出力は

そして走っているとき

出力には次のものが含まれます

私は何が間違っているのですか?

0 投票する
3 に答える
4003 参照

django - Django ダウンロード ファイルが空です

サーバーから自分のマシンに特定のファイルをダウンロードするための簡単な関数を書いています。ファイルは、その ID で表される一意です。ファイルは正しく検索され、ダウンロードは完了しますが、ダウンロードされたファイル (サーバー上のファイルとして名前が付けられています) は空です。私のダウンロード機能は次のようになります。

どこが間違っているのでしょうか? ありがとう!

0 投票する
5 に答える
6237 参照

ruby-on-rails - send_file は空のファイルを送信するだけです

xml ファイルをダウンロードする方法を探しています。私が使う:

しかし、これは常に空のファイルをダウンロードします。ファイル自体には 16 KB のデータが含まれています...

何故ですか?

前地

0 投票する
1 に答える
1218 参照

ruby-on-rails - send_fileがいつ完了したかを知る方法

ダウンロードするデータのコンテンツの準備に時間がかかるため、ユーザーがリクエストを送信したときに「ダウンロードするファイルを準備しています」というメッセージを表示したい

次に、ファイルの準備ができたら、 send_file を使用してデータを送信します

完了したら、メッセージをクリアする必要があります

どうもありがとう

0 投票する
4 に答える
1728 参照

c - sendfile() を使用すると、in_fd がいつ EOF になるかを知ることができますか?

Linux システム コール のマニュアル ページをsendfile読んで、呼び出し元のプログラムがいつin_fdEOFにあるかを知ることができるかどうか疑問に思っています。おそらく、これは戻り値 0 によって通知される可能性がありますが、これは戻り値 0 が実際に何を意味するのかという問題につながります。sendfileのような場合write、戻り値 0 は 0 バイトがコピーされたことを意味します。しかし、sendfileが のような場合read、戻り値 0 は EOF を意味します。を使用するためにからin_fdにコピーするバイト数を事前に知っておく必要がありますか? 0 を返すとはどういう意味ですか?out_fdsendfilesendfile

0 投票する
2 に答える
2480 参照

linux - Linuxsendfileソース

sendfile関数のソースはどこで入手できますか?カーネルソースで見つかりません...