2017-01-26 25 views
0

私は開発中のオペレーティングシステムと通信するためにSSHを使用してきました。 (興味があるならwww.xinu.cs.purdue.eduを見てください)私は悪いプログラミングの本当に奇妙な副作用を見ていて、誰かがどのように起こっているのかを説明できることを願っています。ssh端末挿入端末プログラム名

私が今修正したエラーは、新しいスレッドを作成する関数でパラメータが不規則にリストされていることです。)パラメータが間違っているのは、現在動作していない関数名とその優先順位です実行したいプロセスは1つだけです)。

私の関心は、私がコンソールに(無効な名前と優先順位が含まれている)プロセスのリストを印刷したときに、私の端末は端に端子に sshプログラムの名前を挿入することです。 は、例えば、これは私の端末の最後の数行のようになります。

xsh $ ps 
Pid Name    State Prio Ppid Stack Base Stack Ptr Stack Size 
--- ---------------- ----- ---- ---- ---------- ---------- ---------- 
    0 prnull   ready 0 0 0x0EFDEFFC 0x0EFDEEB0  8192 
    1 rdsproc   susp 200 0 0x0EFDCFFC 0x0EFDCFC8 16384 
    3 Main process  recv 20 2 0x0EFC8FFC 0x0EFC8F64 65536 
    4 shell   recv 50 3 0x0EFB8FFC 0x0EFB8C7C  8192 
    5 F     curr 30548 4 0x0EFD8FFC 0x0EFD8D88  8192 
xsh $ Bitvise SSH Client 

私は「Bitvise SSHクライアント」を入力していなかったが、私はそれをバックスペースすることができます(そして、私は$の前に何かを削除することはできません)。エラーのプロセスはFと表示されます。さらにsshクライアントを切り替えると、新しいプログラムの名前(たとえばpuTTy)が挿入されます。また、複数のプロセスが間違って初期化された場合、不良プログラムごとに1回、ターミナルプログラム名が挿入されます。 (プロセスが何であっても、それがどんな状態であっても)

私のコンピュータがプログラム名をプリントアウトするために、どのような情報をSSH経由で送ることができますか?私はそれを引き起こすエスケープ文字を覚えていないと私は決して私の端末プログラムが呼び出された他のコンピュータに語った。

+0

クライアントとサーバの識別文字列の交換は、通常のssh接続設定の一部です。接続が確立されると、IDストリングを取得するためにチャネルを介して送信する必要はありません。 –

+0

ああ、確かに1つの質問に答えます。だから、どうやって私のクライアント識別文字列が端末に印刷されるのでしょうか?それは私がそのテキストだけを削除することができたので、端末上にテキストを書いた私の終わりのようだったか? –

答えて

2

誤ったプログラム名には、おそらくCtrl-E文字(ASCII 005、ENQ文字)が含まれている可能性があります。これによりPuTTYと他の端末エミュレータはプログラム名で応答します。たとえば、PuTTY FAQthis entryを参照してください。あたかもあなたがプログラムの名前をタイプしたかのような効果があります。