I have a program where I was able to successfully execute cmd commands from my code, but I want to be able to get the output from the cmd command. How can I do that?
You need to the OutputStream (InputStream) of your Process (and you should use a ProcessBuilder)... like so
public static void main(String[] args) {
String filename = args[1].substring(0, args[1].length() - 5);
String cmd1 = "javac " + args[1];
String cmd2 = "java " + filename;
try {
// Use a ProcessBuilder
ProcessBuilder pb = new ProcessBuilder(cmd1);
Process p = pb.start();
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
int r = p.waitFor(); // Let the process finish.
if (r == 0) { // No error
// run cmd2.
}
} catch (Exception e) {
e.printStackTrace();
}
}
A general example to get the return from a command would be:
Process p = null;
try {
p = p = r.exec(cmd2);
p.getOutputStream().close(); // close stdin of child
InputStream processStdOutput = p.getInputStream();
Reader r = new InputStreamReader(processStdOutput);
BufferedReader br = new BufferedReader(r);
String line;
while ((line = br.readLine()) != null) {
//System.out.println(line); // the output is here
}
p.waitFor();
}
catch (InterruptedException e) {
...
}
catch (IOException e){
...
}
finally{
if (p != null)
p.destroy();
}
look here: Extracting a process's exit code in the case of ThreadInterrupted
You need to get the return code... you must wait for it.