คำถามติดแท็ก 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?

11
ProcessBuilder: การส่งต่อ stdout และ stderr ของกระบวนการที่เริ่มต้นโดยไม่บล็อกเธรดหลัก
ฉันกำลังสร้างกระบวนการใน Java โดยใช้ ProcessBuilder ดังนี้: 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)) …

4
Java Programming: เรียก exe จาก Java และส่งผ่านพารามิเตอร์
ฉันกำลังหากลไกในการเรียก exe จาก Java และส่งผ่านพารามิเตอร์เฉพาะ ฉันจะทำอย่างไร? 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 ยอมรับพารามิเตอร์ ปัญหาอื่นคือเมื่อ PathToExe มีช่องว่าง …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.