Używam środowiska wykonawczego do uruchamiania poleceń wiersza polecenia z mojego programu Java. Jednak nie jestem świadomy tego, w jaki sposób mogę uzyskać dane wyjściowe zwracane przez polecenie.
Oto mój kod:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
Próbowałem, System.out.println(proc);
ale to nic nie zwróciło. Wykonanie tego polecenia powinno zwrócić dwie liczby oddzielone średnikiem. Jak mogę uzyskać to w zmiennej do wydrukowania?
Oto kod, którego teraz używam:
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);
Ale nie otrzymuję nic jako moje wyjście, ale kiedy uruchamiam to polecenie samodzielnie, działa dobrze.
pwd && ls
nie tylko wykonuje pojedynczy plik, kiedy robisz to w powłoce, wykonuje zarówno pliki wykonywalne, jak/bin/pwd
i/bin/ls
. Jeśli chcesz robić takie rzeczy w Javie, musisz zrobić coś takiego{"/bin/bash","-c", "pwd && ls"}
. Prawdopodobnie nie masz już tego pytania, ale inni ludzie mogą, więc pomyślałem, że mogę na nie odpowiedzieć.