Print at Dec 20, 2025, 11:09:45 PM

Posted by treehousenorris2 at Feb 5, 2021, 8:43:56 PM
Re: Spawn Shell Process
Got a shell to work from a plugin used with the SourceForge Sweet Home on Windows.


runProcess("cmd /c echo hello world", true);
// or
// String cmdFilePath = runProcess("where cmd", true);
// String cmdToRun = cmdFilePath +" /c echo hello world";

private String runProcess(String command, boolean shouldWait) {
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(command);
if (!shouldWait) {
return null;
}

System.out.println("--"+command);
InputStream stdout = proc.getInputStream();
InputStreamReader isrout = new InputStreamReader(stdout);
BufferedReader brout = new BufferedReader(isrout);
String output = "";
String lineout = null;
System.out.println("<OUT>");
while ( (lineout = brout.readLine()) != null) {
output += (output.length() == 0 ? "" : "\n") + lineout;
System.out.println(lineout);
}
System.out.println("</OUT>");

InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ( (line = br.readLine()) != null) {
System.out.println(line);
}
System.out.println("</ERROR>");

int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
return output;

} catch (IOException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
} catch (InterruptedException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
return null;
}