Я использую среду выполнения для запуска команд командной строки из моей программы 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"}
. У вас, вероятно, больше нет вопроса, но другие люди могут, поэтому я подумал, что могу ответить на него.