1つのシリアル接続を2つに分割するにはどうすればいいですか

1つのシリアル接続を2つに分割するにはどうすればいいですか

アプリケーションとモニターが同じシリアル ポートから読み取るようにする必要があります。アプリケーションはシリアル ポートに対して読み取り/書き込みが可能な唯一のプログラムとなり、モニターは読み取りのみが可能になります。

私はこれを達成することを望んでいます:

                                      /----->(Application)
---(/dev/ttyUSB0 Serial connection)---
                                      \----->(Monitor)

socat ならこれができるかもしれないと聞きました。しかし、どうやってやるのかよく分かりません。

これを具体的にどうすればよいのでしょうか? これは 192K ボーレートで実行されるシリアル接続で、Debian Linux システムで実行しています。

答え1

と呼ばれる小さなユーティリティがあり、これは 2 つ以上の異なるアプリケーションで読み取ることができる任意のファイル (パイプも含む)にtee分割します。stdinstdout

cat /dev/ttyUSB0 | tee somefile1.txt somefile2.txt | application &
tail -F somefile1.txt | monitor &
tail -F somefile2.txt | parser &

関連情報