ฉันใช้รันไทม์เพื่อเรียกใช้คำสั่งที่พร้อมรับคำสั่งจากโปรแกรม Java ของฉัน อย่างไรก็ตามฉันไม่ทราบว่าจะรับเอาต์พุตที่คำสั่งส่งคืนได้อย่างไร
นี่คือรหัสของฉัน:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
ฉันพยายามทำSystem.out.println(proc);
แต่ไม่ได้ส่งคืนอะไร การดำเนินการของคำสั่งนั้นควรคืนค่าสองตัวเลขโดยคั่นด้วยเครื่องหมายอัฒภาค ฉันจะรับสิ่งนี้ในตัวแปรเพื่อพิมพ์ออกมาได้อย่างไร
นี่คือรหัสที่ฉันใช้ตอนนี้:
String[] commands = {"system.exe", "-get t"};
Process proc = rt.exec(commands);
InputStream stdIn = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdIn);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
แต่ฉันไม่ได้รับสิ่งใดเป็นผลลัพธ์ของฉัน แต่เมื่อฉันรันคำสั่งนั้นเองมันก็ใช้ได้ดี
pwd && ls
ไม่เพียงแค่เรียกใช้ไฟล์เดียวเมื่อคุณทำเช่นนั้นในเชลล์มันจะเรียกใช้ทั้งสอง/bin/pwd
และ/bin/ls
ไฟล์ที่เรียกทำงานได้ หากคุณต้องการทำสิ่งต่าง ๆ ภายในจาวาคุณจะต้องทำสิ่ง{"/bin/bash","-c", "pwd && ls"}
นั้น คุณอาจไม่มีคำถามอีกต่อไป แต่คนอื่นอาจจะคิดว่าฉันอาจตอบก็ได้