Я пытаюсь выполнить визуальный базовый c код скрипта в моем java приложении с помощью компоновщика процессов. Поскольку предоставленный пользователем скрипт может не завершить sh его выполнение во времени, я хочу предоставить средства для ограничения этого времени выполнения. В следующем коде вы можете увидеть мою логику c, но на самом деле она не выполняет то, что должна делать. Как я могу заставить это ожидание работать, чтобы ограничить время выполнения?
private void run(String scriptFilePath) throws ScriptPluginException {
BufferedReader input = null;
BufferedReader error = null;
try {
ProcessBuilder p = new ProcessBuilder("cscript.exe", "//U", "\"" + scriptFilePath + "\"");
String path = "";
if (scriptFilePath.indexOf("/") != -1) {
path = scriptFilePath.substring(0, scriptFilePath.lastIndexOf("/"));
}
path += "/" + "tempvbsoutput.txt";
p.redirectOutput(new File(path));
Process pp = p.start();
try {
pp.waitFor(executionTimeout, TimeUnit.MINUTES);
} catch (InterruptedException e) {
SystemLog.writeError(jobId, ScriptConsts.COMPONENT_ID, "VBScriptExecutor", "run", 80401104,
"VB Script executes fail.");
}
if (!pp.isAlive()) {
pp.getOutputStream().close();
}
// rest of the code flow
}