タグ付けされた質問 「buffer」

このタグは、パイプバッファーを含むカーネルバッファーキャッシュに関する質問用です。これらは、最近アクセスされたファイルや頻繁にアクセスされるファイルを格納するために使用されます。

6
stdinまたはファイルをバッファリングできるプログラム
一時ファイルを使用する以外に、プログラムが入力をバッファリングできる方法stdinがありますが、を取得するまでコンテンツを出力しませんEOF。シェル変数も使用したくありません(例:)buffer=$(cat)。 このプログラムは次のように動作するはずです(プログラム名はであると想定buffered-cat): $ buffered-cat line 1 line 2 line 3 ^D # Ctr-D here(End of Line) プログラムが受け取った^Dので、buffered-cat出力は内容を出力します line 1 line 2 line 3
12 shell  stdout  buffer 

1
Linuxの「漏れやすい」パイプ
次のようなパイプラインがあるとします。 $ a | b bstdinの処理を停止した場合、しばらくしてからパイプがいっぱいになり、astdoutへの書き込みがブロックされます(b処理が再開されるか、終了するまで)。 これを回避したい場合は、次のように大きなパイプ(または、もっと簡単に言うとbuffer(1))を使用したくなるかもしれません。 $ a | buffer | b これは単に私にもっと時間を買ってくれるでしょう、しかしa結局結局止まるでしょう。 (私が取り組んでいる非常に具体的なシナリオの場合)欲しいのは、「リークの多い」パイプを使用して、いっぱいになるとバッファからデータを(理想的には行ごとに)ドロップしてa続行できるようにすることです処理(おそらくご想像のとおり、パイプを流れるデータは使い捨てです。つまり、データを処理することは、ブロックなしで実行できることbほど重要ではありませんa)。 要約すると、境界のある、リーキーなバッファのようなものが欲しいです: $ a | leakybuffer | b おそらくどの言語でも簡単に実装できますが、「すぐに使える」もの(またはbashの1行のようなもの)がないのではないかと思っていました。 注:例では通常のパイプを使用していますが、質問は名前付きパイプにも同様に適用されます 私は以下の回答を授与しましたが、以下の簡単なソリューションにはいくつかの制限があったため、leakybufferコマンドを実装することも決定しました:https : //github.com/CAFxX/leakybuffer
12 linux  pipe  fifo  buffer 

4
別のコマンドにパイプする前にコマンド出力を完全にバッファリングしますか?
一時ファイルなしでコマンドが実行された後にのみコマンドを実行する方法はありますか?もう1つの実行中のコマンドと、出力をフォーマットしてcurlを使用してHTTPサーバーに送信する別のコマンドがあります。実行するとcommandA | commandB、commandBが起動curlし、サーバーに接続してデータの送信を開始します。のでcommandAとても時間がかかり、HTTPサーバがタイムアウトになります。やりたいことができるcommandA > /tmp/file && commandB </tmp/file && rm -f /tmp/file 好奇心から、一時ファイルなしでそれを行う方法があるかどうか知りたいです。試してみましたmbuffer -m 20M -q -P 100が、カール工程はまだ始まったばかりです。Mbuffer commandAは、実際にデータを送信する処理が完了するまで待機します。(データ自体は最大で数百kbです)
10 shell  pipe  buffer 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.