ncursesを使用したbashエスケープシーケンスとその他の文字の解釈

ncursesを使用したbashエスケープシーケンスとその他の文字の解釈

私はそのようなターミナルマルチプレクサを設計したかったのですが、それほどtmux複雑ではなくリモートで動作できる最小のものをncurses

サーバー側のワークフローは次のとおりです。

  • サーバープロセスは合計2つのプロセスを生成します。最初のプロセスはfork親プロセスからインポートされ、forkpty2番目のプロセスは親プロセスからインポートされます。forkptyedプロセスはbashシェルになりますexecl。最初のプロセスは、呼び出しから返された記述子を使用して2番目のプロセスと通信しますforkpty()。最初のプロセスもクライアントと通信します。まるでブローカーと同じです。これは、クライアントの情報をforkptyトレーニングプロセスに渡すか、その逆も同様です。

クライアント側のワークフローは次のとおりです。

  • クライアントはサーバーとの通信を担当するスレッドを生成します。内部スレッドが実行されますncurses

問題は、ncursesbashやその他の特殊文字のエスケープシーケンスを解析しないことです。 2つのスクリーンショットを撮りました(クライアント側で撮ったものです)。最初に、サーバーから受信した情報(シェルで実行されたコマンドの出力)がwrite()システムコールを使用して標準出力に表示されます。 2番目のスクリーンショットには、stdscr機能の使用に関する情報が表示されますprintw。これが2つのスクリーンショット間のコード上の唯一の違いです。

printw端末を複数のウィンドウに分割したいので、その機能が必要です。ncursesこれらのシーケンス(および特殊文字)をどのように簡単に解釈できますか?スクリーンショットを見つけることができますここ

tmuxPS:私はまだソースコードを完全にまたは部分的に理解するレベルではありません。

関連情報