OceanTara Code Blog

February 20, 2009

Use Java’s ProcessBuilder to track error output of external programs

Filed under: Java — chris @ 5:15 pm

java.lang.ProcessBuilder allows a developer to redirect the stderr and stdout of an external program to the logger. Here’s some code to show how to do that:

String[] args = executionCmd.split(" ");
ProcessBuilder procbuilder = new ProcessBuilder(args);
procbuilder.directory(new File("My working dir"));
procbuilder.command(args);
procbuilder.redirectErrorStream(true);
Process proc = procbuilder.start();
if(isHangedProcess()) {
   BufferedInputStream inpstream = new BufferedInputStream(proc.getInputStream());
   BufferedReader br = new BufferedReader(new InputStreamReader(inpstream));
   String line;
   while ((line = br.readLine()) != null) {
      log.error(line);
   }
   proc.destroy();
}
else if(proc.waitFor() != 0) {
   log.error("process failed with error code: " + proc.exitValue());
}

55 Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress