測定デバイスが存在しないかproc1 | proc2
のように動作を変更することなく、パイプを流れるビットレートを正確に測定する方法はありますか? ティーのようなものは大丈夫ですか?私は欲しいですproc1 | tee proc2 > flow_measurement_thing
かproc1 | tee flow_measurement_thing > proc2
?私がパイプを正しく理解していれば、Unixパイプはデフォルトで4096バイトを噛むことができ、受信者が入ってくるのと同じくらい速くデータを読み取っていない場合、それらはブロックされる可能性があるため、測定デバイス自体が「層流」フロースルーを引き起こす可能性があるのではないかと心配しています.正しく実装しないと、パイプが「乱流」になります。
実際の使用例は python に接着されており、os からの名前付きパイプが使用されています。これは非常に単純化された例です。
import os, subprocess
os.mkfifo('pipe')
subprocess.Popen(['convert', '-i', 'pipe', '-o', 'somewhere_else'])
subprocess.Popen(['capture', '-o', 'pipe'])
簡単にするために、コンバーターがビットレートを変更しないと仮定してcapture | convert | /dev/null
、同じレートでビットをポンピングしていることを確認できるようにしたいcapture | /dev/null