再試行でストリームを2つのバイナリに分割する方法は?

再試行でストリームを2つのバイナリに分割する方法は?

s16le形式のオーディオストリームを生成するバイナリファイルがあります。このストリームを2つの異なるプロセスに分割したいのですが、プロセス2でエラーが発生した場合、コマンドはプロセス1を終了して中断したくありません。基本的に私が望むものは次のとおりです。

$ ./input | tee >(process_1) | process_2

プロセス2が終了しない場合は、再起動したいと思います。デフォルトでは、process_2が終了すると、パイプ信号が伝播するとコマンド全体が終了します。

シグナルを明示的に処理し、独自のロジックを作成してCでこれを行うことができることを知っていますが、基本的なbashを使用してシグナルをキャプチャ/処理し、コマンド自体を中断することなくダウンストリームプロセスを再開する方が良い方法があるのだろうか。

この例では、録音とネットワークストリームの間でオーディオデータを分割します。

get_audio | tee >(./recorder) | ffmpeg -i pipe: ...

ここでの問題は、IceCastへのffmpegの接続が中断されるとコマンド全体が終了しますが、前のプロセスは中断せずに録音を続けたいということです。

関連情報