ターミナルと通信するサードパーティによって開発された Linux プロセスがあります。デバッグのために、通信が行き来するのを見たいです。
cat
(一方向を見るために)トリックを行うと思うかもしれません:
./third-party-app &
cat /dev/tty
...しかし、そうではありません。むしろ、cat
アプリケーション向けのデータの半分を盗みますが、これはほとんど価値がありません。
third-party-app は、想定するようにハードコーディングされて/dev/tty
います。
通信をスパイするために私が見つけた 1 つの方法は、/dev/tty
デバイスの名前を変更し、その場所で/dev/real_tty
呼び出される名前付きパイプを作成することです。/dev/tty
次に実行します:
cat /dev/real_tty | tee /dev/tty &
... から名前付きパイプにデータ/dev/real_tty
をコピーすることで、少なくとも の出力を確認できます。/dev/real_tty
/dev/tty
stdout
この種の機能は機能しますが、非常に危険な感じがし、デバイスを交換するという巧妙な方法に依存しています。また、名前付きパイプは一方向にしかデータを伝送しないため、双方向には機能しません。
これを行う正しい方法は何ですか?
不思議に思っている方のために説明すると、TTY デバイスはマイクロコントローラーへの RS-232 リンクです。情報は機密でも安全でもありません。すべてのプロセス (アプリケーションとスパイ) は root として実行できます。