実行ファイルを実行してもPuTTYのタイトルが変わり続けるのはなぜですか?

実行ファイルを実行してもPuTTYのタイトルが変わり続けるのはなぜですか?

通常、実行可能ファイルを編集すると、大きなファイルである限り、バイナリが奇妙な文字を含むcatタイトルが変更され続けることがわかります。プレフィックスは見えません。application理解を助けるため。STDOUTstrace

何が起こっていて、このようなことが起こりましたか?ただ気になりました。

答え1

そうではありませんが、PuTTYは次のことに応じてこれを行いました。コンビネーション性格。

PuTTYは(を通じて)多くを認識しています。no方法みんなxtermLinuxコンソールとあまり使い慣れない端末で使用されるエスケープシーケンス。 PuTTYの開発者の一人が興味を持っているすべての項目のリスト(合計650項目)を編集しました。あちこちに次のファイルがあります。「すべて脱出.txt」、次のように開始します。

# This file is hoped to document all the escape sequences supported by
# terminals that are vaguely compliant with ECMA-48 and friends.

# Changes should be submitted to <[email protected]>

# It includes everything from:
# <URL:http://www.cs.utk.edu/~shuford/terminal/dec_vt220_codes.txt> 1999-05-16
# <URL:http://www.cs.utk.edu/~shuford/terminal/vt100_reference_card.txt>
#                                   1993-02-01
# <URL:http://www.cs.utk.edu/~shuford/terminal/vt100_codes_news.txt>1998-09-18
# <URL:http://www.cs.utk.edu/~shuford/terminal/ansi_dec_controls_news.txt>
#                                   1999-05-16
# <URL:http://www.cs.utk.edu/~shuford/terminal/xterm_controls.txt>  1999-10-12
# <URL:http://www.cs.utk.edu/~shuford/terminal/color_control_news.txt>
#                                                                   1999-11-13
# ECMA-48 5th Ed. control functions (section 8.3, annex F)
# Linux console_codes(4)
# SunOS 5.7 wscons(7D)
# UnixWare 7 display(7)
# IRIX 6.5.5 xwsh(1G)
# VT220 Reference manual (<URL:http://vt100.net/docs/vt220-rm/>, EK-VT220-RM)
# <URL:http://vt100.net/ctrlseq_dec.html>                           1999-11-24
# <URL:http://vt100.net/ctrlfunc_dec.html>                          1999-12-01
# <URL:http://www.wyse.com/service/support/kbase/SEQwt.asp?Q=9> (wy75)
#                                                                   1999-07-19
# <URL:ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/rbcom346.zip#TERM-EMU.DOC>
#                                                                   1999-09-13
# <URL:http://www.itscj.ipsj.or.jp/ISO-IR/2-1.htm>                  1999-04-19
# <URL:http://www.itscj.ipsj.or.jp/ISO-IR/2-2.htm>                  2004-09-27
# <URL:http://www.itscj.ipsj.or.jp/ISO-IR/2-3.htm>          2004-09-27
# <URL:http://www.itscj.ipsj.or.jp/ISO-IR/2-8-1.htm>                1999-04-19
# <URL:http://www.itscj.ipsj.or.jp/ISO-IR/2-8-2.htm>                2001-05-10
# iBCS2 description in ESR's termtypes.master version 10.2.7
# Reflection Terminal Reference Manual for ADDS, ANSI, DG, VT, WYSE, and
#       Unisys Hosts; Version 7.0; September 1998; published by WRQ Inc.
# DEC Terminals and Printers Handbook 1985 EB 26291-56 (Appendices C, E, and G)
# OpenServer 5.0.6 screen(HW)
# X Consortium Compound Text Encoding Version 1.1

何らかの理由で、彼らはLinuxとxtermのドキュメントを直接参照するアイデアが好きではなく、代わりに補助ソースを使用しました。

PuTTY で認識されるタイトル文字列は、次のいずれかのオプションで始まります。

  • ANSI 7ビットOSC(escape])または
  • ANSI 8ビットOSC(8進数)235)

の後に0、、、、(ASCII番号)または、1221L

セミコロン、

そしてタイトルテキスト

次の選択肢のいずれかで終了します。

  • ANSI 7ビット文字列ターミネータ(escape\)または
  • ANSI 8ビット文字列ターミネータ(8進数234)または
  • ASCII BEL(7、xtermで使用)

ところで、ASCIIキャリッジリターンまたは改行が表示されると、ヘッダエスケープ処理は停止します。

「ラージ」ファイルは任意に見えるかもしれませんが、テーブルなどの形式に多少の違いがあるかもしれません。それ以外の場合どんどん説明に従ってタイトルを更新します。

端末をリセット(または完全に停止)せずに見つけることができるように、潜在的なヘッダー文字列を検出するプログラムを構築することは興味深いかもしれません。

追加資料:

答え2

straceインバンドコントロールなので、それ自体は表示されません。

PuTTYの外部では、通常、プロンプトが中断されると見なされます。例:バイナリ表示後の端末の修正

これをエスケープシーケンスといいます。つまり、「escape」という文字で始まる文字列で表されるコマンドです。 clearはこれを使用する簡単な例です。

帯域内制御は設計上の欠陥と見なすことができ、これは深刻な問題を引き起こす可能性があります。https://www.proteansec.com/linux/blast-past-executing-code-terminal-emulators-via-escape-sequences/ (より一般的には - 初期の自動電話ネットワークは、ルーティングのために帯域内制御を使用してハッカーによって制御できました。http://www.mit.edu/hacker/hacker.html)。

ターミナルウィンドウのフルネームは「ターミナルエミュレータ」であることを覚えておくと便利です。物理エンドポイントには実際に帯域外制御機能はありません。物理シリアルラインはバイトストリーム(7ビットまたは8ビット)を転送します。

というシリアル信号があります。「残り」。しかし、「中断条件」は一般に1つの目的にのみ使用される。説明によると、通常のキャラクターよりも転送時間が長いようです。

(たとえば、デザインの欠陥は解決することができます。印刷可能デフォルトでは、文字は渡されません。追加の制御なしでプリンタをシミュレートできます。 HTMLテンプレートにテキストを挿入するのと比較してみてください。&<>文字が消えたりコードで実行されたりするのを防ぐために、文字を具体的に処理する必要があります。

物理シリアルポートには、端末の幅と高さを渡すことができないという欠点があります。物理端末は固定サイズなので、このようなクエリを実装する傾向がないと思います。ターミナルウィンドウはこれに対する解決策を実装します(何かを確認するように指示するSIGWINCHを送信します)。PTY拡大する)。 SSHにはこれを伝えるいくつかの機能もあります。楽しくリモートログインこれに対するプロトコルの制御は、帯域内制御として記述される。これは多くの8ビットコードを定義することによって行われます。明らかに、UTF-8と互換性のないASCIIのみを想定しています。源泉:SSHとTelnetを介して端末の長さと幅はどのように渡されますか?

答え3

何が起こっているのかは、バイナリにウィンドウのタイトルを設定するために使用されるエスケープシーケンスが含まれていることです(xtermsでは、パテでは<esc>]2異なるかどうかわかりません)。

関連情報