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