Я використовую час виконання для запуску командних рядків команд моєї програми 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
виконавчі файли. Якщо ви хочете робити подібні речі в межах Java, вам потрібно зробити щось подібне{"/bin/bash","-c", "pwd && ls"}
. Напевно у вас більше не виникає питання, але інші люди можуть, тому я подумав, що можу відповісти на нього.