In addition, you will want to redirectOutput, redirectError, monitor the process for when it stops, and force stop the process if it has run too long. Below are some of the extra checks you can make:
var pb = new java.lang.ProcessBuilder(
"C:\\ImageMagick\\magick.exe",
"C:\\qie_files\\outbound\\QLTest\\"+qie.getVariable('filename')+".pdf",
"C:\\qie_files\\outbound\\QLTest\\"+qie.getVariable('filename')+".tiff");
pb.directory(new java.io.File("C:/Users/qiedev/Documents"));
pb.redirectErrorStream(true);
pb.redirectOutput(java.lang.ProcessBuilder.Redirect.INHERIT);
pb.redirectError(java.lang.ProcessBuilder.Redirect.INHERIT);
// wait for the process to complete.
var process = pb.start();
qie.debug('after Start');
var startTime = qie.deduceDate(qie.getSystemDate());
while (process.isAlive()) {
var now = qie.deduceDate(qie.getSystemDate());
if (now.getTime() > startTime.getTime() + 10000) {
break;
}
qie.debug('Sleeping for 10 ms.');
qie.pause(10);
}
if (process.isAlive()) {
qie.warn('I will need to destroy it.');
process.destroy();
}
qie.debug('Exit Value = ' + process.exitValue());