Tôi đang sử dụng thời gian chạy để chạy các lệnh nhắc lệnh từ chương trình Java của mình. Tuy nhiên, tôi không biết làm thế nào tôi có thể nhận được đầu ra mà lệnh trả về.
Đây là mã của tôi:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
Tôi đã cố gắng làm System.out.println(proc);
nhưng điều đó không trả lại bất cứ điều gì. Việc thực hiện lệnh đó sẽ trả về hai số được phân tách bằng dấu chấm phẩy. Làm thế nào tôi có thể nhận được điều này trong một biến để in ra?
Đây là mã tôi đang sử dụng bây giờ:
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);
Nhưng tôi không nhận được bất cứ điều gì như đầu ra của mình, nhưng khi tôi tự chạy lệnh đó thì nó hoạt động tốt.
pwd && ls
không chỉ thực thi một tệp duy nhất, khi bạn thực hiện điều đó trong một trình bao, nó thực thi cả tệp thực thi/bin/pwd
và/bin/ls
thực thi. Nếu bạn muốn làm những thứ như thế trong java, bạn sẽ cần phải làm một cái gì đó như thế{"/bin/bash","-c", "pwd && ls"}
. Bạn có thể không có câu hỏi nữa nhưng những người khác có thể vì vậy tôi nghĩ tôi có thể trả lời nó.