s16le形式のオーディオストリームを生成するバイナリファイルがあります。このストリームを2つの異なるプロセスに分割したいのですが、プロセス2でエラーが発生した場合、コマンドはプロセス1を終了して中断したくありません。基本的に私が望むものは次のとおりです。
$ ./input | tee >(process_1) | process_2
プロセス2が終了しない場合は、再起動したいと思います。デフォルトでは、process_2が終了すると、パイプ信号が伝播するとコマンド全体が終了します。
シグナルを明示的に処理し、独自のロジックを作成してCでこれを行うことができることを知っていますが、基本的なbashを使用してシグナルをキャプチャ/処理し、コマンド自体を中断することなくダウンストリームプロセスを再開する方が良い方法があるのだろうか。
この例では、録音とネットワークストリームの間でオーディオデータを分割します。
get_audio | tee >(./recorder) | ffmpeg -i pipe: ...
ここでの問題は、IceCastへのffmpegの接続が中断されるとコマンド全体が終了しますが、前のプロセスは中断せずに録音を続けたいということです。