J'utilise le runtime pour exécuter des commandes d'invite de commande à partir de mon programme Java. Cependant, je ne sais pas comment je peux obtenir la sortie renvoyée par la commande.
Voici mon code:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
J'ai essayé de faire System.out.println(proc);
mais cela n'a rien retourné. L'exécution de cette commande doit renvoyer deux nombres séparés par un point-virgule. Comment pourrais-je obtenir cela dans une variable à imprimer?
Voici le code que j'utilise maintenant:
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);
Mais je n'obtiens rien comme sortie, mais quand j'exécute cette commande moi-même, cela fonctionne très bien.
pwd && ls
pas seulement un seul fichier, lorsque vous faites cela dans un shell, il exécute à la fois les exécutables/bin/pwd
et/bin/ls
. Si vous voulez faire des choses comme ça dans java, vous devrez faire quelque chose comme{"/bin/bash","-c", "pwd && ls"}
. Vous n'avez probablement plus la question mais d'autres personnes pourraient le faire, alors j'ai pensé que je pourrais y répondre.