2012-03-13 17 views
0

Windows 7で子プロセスを生成するJavaアプリケーションとして実行しようとしています。 私が使用しているコマンドは次の行にあります:java -cp ...list of libs... 問題は一度ですアプリケーションがロードされると、それ自体のstdinストリームはありませんが、親のstdinを使用しようとします。その結果、コマンドはそのストリームに渡されません。 この現象を引き起こす可能性のある 'java.exe'のパラメータはありますか?そのため、子プロセスは独自のstdinを持ちますか? おかげJavaアプリケーションがcmd.exeコンソールからstdinをスチール

更新: 私はないJavaプログラマだが、Javaアプリでこのラインの私が実行していますので、これが起こる可能性があり申し訳ありません:

this(new IO(System.in, System.out, System.err), STANDARD_INPUT_PROMPT, STANDARD_RESULT_PROMPT); 

もしそうなら、への適切な代替品が何でありますかSystem.in

+0

JVMをどのように産んでいますか? – TofuBeer

+0

'IO'クラスとは何ですか?そのようなことを聞​​いたのは初めてだ。 –

+0

@TofuBeerあなたが何を意味するかわからない、私はアプリケーションを実行するために、指定されたparamsで "java.exe"を使用しています。 – user971956

答えて

0

なぜ、子プロセスを生成する新しいコマンドプロンプトを起動しないのですか?私はずっとWindows環境のための多くをプログラムしていないが、私は仕事に次しまっ:

public class Main { 
    public static void main(String [] args) { 
    try { 
     Runtime.getRuntime().exec("cmd /k start cmd /k echo hello"); 
    } catch (Throwable t) { 
     t.printStackTrace(); 
    } 
    } 
} 

あなたが必要な引数を使用してサブプロセスプログラムとハローでエコー交換した場合、あなたは標準入力を受け取るために、すべて設定する必要があります。言い換えれば:

Runtime.getRuntime().exec("cmd /k start cmd /k java -cp ...list of libs..."); 

途中でこれを行う方法はもっときれいかもしれません。

+0

興味深いアイデアは、それが動作することを期待していたが、何らかの理由でjava.exeがcmd.exe(2番目の場合でも)の標準入力を引き継いでいます。 Javaの 'マスター'のようなストリームがありますか? – user971956

関連する問題