プログラムのシリアル出力をjpnevulatorなどのシリアルスニファによって使用される擬似端末に送信します。

プログラムのシリアル出力をjpnevulatorなどのシリアルスニファによって使用される擬似端末に送信します。
  1. e.g. /dev/ttyS0実際のシリアルポートを介してリモートデバイスと通信するアプリケーションを実行しています。正規化された名前の代わりに数値サフィックスをプログラムに渡して、背中を使用するように/dev/ttyS0このアプリケーションを構成できます。/dev/ttyS1

  2. 私はこのシリアルポートを通過するトラフィックをスニッフィングするのと似たものを使用したいと思いますjpnevulator。これにより、jpnevulator監視するアプリケーションを接続する必要がある疑似端末が開きます。

アプリケーションが経由で透過的に接続されるように、ポート名を/dev/ttyS1実際の擬似端末(たとえば)に再割り当てする方法はありますか?ファイルリンクでこれを達成できますか?/dev/pty/23/dev/pty/23/dev/ttyS1ln

答え1

私があなたの場合は、バイナリを編集し、/dev/ttyS%d同様の文字列を置き換えて/dev/ptyX%d(代替文字列は元の文字列と同じ長さです)、疑似/dev/ptyX0端末のスレーブ側のパスを指すシンボリックリンクを生成します。

やや厄介な他の解決策がたくさんあります。

a)システムがLinuxの場合は一時的にmount --bind /dev/pts/<pty used by the sniffer> /dev/ttyS2(プログラムをシリアルラインに接続する2

b) 再度削除し/dev/ttyS2て pty へのリンクと交換します。

c) qemu で実行し、vm のシリアルポートを pty にリダイレクトします。

d)いくつかの偽のパス/ファイルシステムソリューションが使用されているLD_PRELOAD

e) 名前空間、Unionfs、chroots など

関連情報