1

以下を使用して、ubuntu の「/bin/bash」に接続しています。

process = Runtime.getRuntime().exec(cmd);

ここで cmd は、プロセスから読み書きするさまざまなコマンドを含む文字列です。
今、私はsshを使用してリモートマシンにログインし、extプロセスへの書き込み情報を読んでいるときに、リモートマシンからログアウトするために、次のような制御文字を送信する必要がある状況に遭遇しました:

CTRL + ]セッションを正常にログアウトして、ローカル マシンに戻るためです。CTRLcmd が文字列型であると仮定すると、この文字をプロセスに書き込むにはどうすればよいですか?

4

1 に答える 1

5

ASCIIのControl-]は、0358進数に相当します。Javaでは、これを「\035」として表すことができます。

Writer writer = new OutputStreamWriter(process.getOutputStream());
writer.write("\035");
writer.flush();

また、10進数の29に相当するため、値が29のバイトを書き込むことができれば、それも機能します。

OutputStream os = process.getOutputStream();
os.write(29);
os.flush();

Control-]はリモートプログラムと関係があると思います。あなたはtelnetについて話しているのですか?ただし、「exit \ n」と書き込むと、リモートbashも閉じられます。

Writer writer = new OutputStreamWriter(process.getOutputStream());
writer.write("exit\n");
writer.flush();

OutputStreamもちろん、リモートプロセスのSTDINを閉じるを閉じることもできます。

os.close();
于 2011-12-13T13:27:53.300 に答える