共有場所にexeプログラムを配置しました。起動中は引数を取りません。コマンドウィンドウで起動すると、それを使用して実行できるコマンドのリストを含むヘルプメニューが表示され>
、入力コマンドを期待して終了します。TRIGGER
そのリストから呼び出された特定のコマンドを実行する必要があります。これまでのところ、これは私が行ったことですが、完全に失敗します。プロセスからの出力を表示することもtrigger
、ストリームから入力コマンドを受け取ることもありません。
public void execute(){
String cmd = "\\\\sharedLocation\\server\\adm.exe";
p = Runtime.getRuntime().exec(cmd);
InputStream in = p.getInputStream();
OutputStream out = p.getOutputStream();
BufferedReader br= new BufferedReader(new InputStreamReader(in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write("TRIGGER");
bw.flush();
String output = "";
while (!output.endsWith(">")) {
System.out.println("in loop");
output = output + br.readLine();
}
System.out.println("Out"+output);
out.close();
p.waitFor();
}
編集:adm.exeはこのプログラムによって起動されますが、adm.exeはブロッキングプロセスのようです。「ループ内」ステートメントの印刷に失敗します。ただし、Windowsタスクマネージャーを開いてadm.exeプロセスツリーを強制終了すると、コンソールに表示されます
in loopnull
in loopnullnull
in loopnullnullnull
in loopnullnullnullnull
in loopnullnullnullnullnull
in loopnullnullnullnullnullnull
in loopnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
Outnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull