タグ付けされた質問 「processbuilder」

4
ProcessBuilderとRuntime.exec()の違い
私はJavaコードから外部コマンドを実行しようとしていますが、Runtime.getRuntime().exec(...)との間に気付いた違いがありnew ProcessBuilder(...).start()ます。 使用する場合Runtime: Process p = Runtime.getRuntime().exec(installation_path + uninstall_path + uninstall_command + uninstall_arguments); p.waitFor(); exitValueは0で、コマンドは正常に終了します。 しかし、とProcessBuilder: Process p = (new ProcessBuilder(installation_path + uninstall_path + uninstall_command, uninstall_arguments)).start(); p.waitFor(); 終了値は1001で、コマンドはwaitFor戻りますが途中で終了します。 問題を解決するにはどうすればよいProcessBuilderですか?

10
ProcessBuilder:メインスレッドをブロックせずに、開始されたプロセスのstdoutおよびstderrを転送する
次のように、ProcessBuilderを使用してJavaでプロセスを構築しています。 ProcessBuilder pb = new ProcessBuilder() .command("somecommand", "arg1", "arg2") .redirectErrorStream(true); Process p = pb.start(); InputStream stdOut = p.getInputStream(); 今私の問題は次のとおりです。そのプロセスのstdoutやstderrを通過しているものをすべてキャプチャし、System.out非同期にリダイレクトしたいと思います。プロセスとその出力リダイレクトをバックグラウンドで実行する必要があります。これまでのところ、これを行うことがわかった唯一の方法は、継続的に読み取りをstdOut行い、適切なのwrite()メソッドを呼び出す新しいスレッドを手動で生成することですSystem.out。 new Thread(new Runnable(){ public void run(){ byte[] buffer = new byte[8192]; int len = -1; while((len = stdOut.read(buffer)) > 0){ System.out.write(buffer, 0, len); } } }).start(); そのアプローチは一種の作品ですが、それは少し汚い感じがします。その上、正しく管理および終了するためのスレッドがもう1つあります。これを行うより良い方法はありますか?

4
Javaプログラミング:Javaからexeを呼び出し、パラメーターを渡します
Javaからexeを呼び出し、特定のパラメータを渡すメカニズムを考えています。どのようにできるのか? Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe").start(); InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; System.out.printf("Output of running %s is:", Arrays.toString(args)); while ((line = br.readLine()) != null) { System.out.println(line); } 前のコードは機能します。しかし、パラメータをに渡すことはできません。MyExe.exeはパラメータを受け入れます。もう1つの問題は、PathToExeに空白がある場合です。ProcessBuilderが機能していないようです。例えば: C:\\User\\My applications\\MyExe.exe ありがとうございました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.