Java programımdan komut istemi komutlarını çalıştırmak için çalışma zamanını kullanıyorum. Ancak, komutun döndürdüğü çıktıyı nasıl alabileceğimin farkında değilim.
İşte benim kod:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
Yapmaya çalıştım System.out.println(proc);
ama bu bir şey döndürmedi. Bu komutun yürütülmesi, noktalı virgülle ayrılmış iki sayı döndürmelidir. Bunu çıktı almak için bir değişkende nasıl alabilirim?
İşte şimdi kullanıyorum kodu:
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);
Ama çıktı olarak hiçbir şey almıyorum, ama bu komutu kendim çalıştırdığımda iyi çalışıyor.
pwd && ls
sadece tek bir dosya yürütmekle kalmaz , bunu bir kabukta yaptığınızda hem/bin/pwd
ve hem de/bin/ls
yürütülebilir dosyaları yürütür . Java içinde böyle şeyler yapmak istiyorsanız, böyle bir şey yapmanız gerekir{"/bin/bash","-c", "pwd && ls"}
. Muhtemelen artık sorunuz yok ama başkaları da cevap verebilir diye düşündüm.