外部プロセスを実行するためにJavaのapache execクラスを使用する簡単なコードがいくつかあります。特定のコマンドラインプログラムの場合WindowsのJavaプロセスからのコマンドライン出力がありません
Executor ex = new DefaultExecutor();
ex.setStreamHandler(new PumpStreamHandler(System.out, System.out, System.in));
CommandLine cl = new CommandLine(
"C:\\program.exe");
ex.execute(cl);
}
、これは期待通りに動作し、ストリーム「の」に自分のテキストを受け入れながら、「アウト」の流れの中に、すべてのプログラムの出力を取得します。しかし、他のプログラムでは、プロセスの出力がコマンドラインから手動で表示されますが、javaプロセスを経由して実行すると何も入力されません。
私は最終的にstdinに書き出し、コード内でstdoutを取り出して分析したいと考えています。
私にはわからない理由がある場合、なぜいくつかのプログラムはコマンドラインでテキストを出力するようですが、私はそれらをJavaプロセスとして実行するとストリームから何も受け取らないのですか?
これはWindowsで発生しています。
多分あなたはこの質問からの問題があります:http://stackoverflow.com/questions/27249101/windows-prevents-stdout-from-external-command-line-executions-to-be-redirected-t – radio