私はstdinとstdoutをJavaのサブプロセスからリダイレクトしようとしていますが、結局出力はJTextAreaなどになります。stdinとstdoutをJavaでリダイレクトする
はここ
Process cmd = Runtime.getRuntime().exec("cmd.exe");
cmd.getOutputStream().write("echo Hello World".getBytes());
cmd.getOutputStream().flush();
byte[] buffer = new byte[1024];
cmd.getInputStream().read(buffer);
String s = new String(buffer);
System.out.println(s);
出力は次のようになり、私の現在のコードです:私は、出力された文字列 "Hello World" を参照してください期待してい
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\(Current Directory)>
。 親プロセスが十分長く生存していない可能性がありますか?
複数のコマンドを送受信することもできます。
パーフェクト!ありがとうございました。 –
@Hovevercraft:入力ストリームをリスンしようとする前に出力ストリームに書き込もうとしたので、何も見えていないのが理にかなっています。私はコマンドが書かれた後*を読むことがなぜ短い読書につながるのか理解していない。実際、あなたは「何も見ていない」と言っていますが、少なくとも彼は 'cmd.exe'のバナーとプロンプトを見ています。私は彼が再び読むと、彼はそれの残りを見るだろうという印象を持っています。私は何が欠けているのですか? –