From 75d5cf215a19c8f475d981bb3de2f6c485f17130 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期日, 29 九月 2024 15:23:02 +0800 Subject: [PATCH] 1 --- src/main/java/com/se/simu/service/UwService.java | 66 ++++++++++++++++++++++++++++++--- 1 files changed, 60 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/se/simu/service/UwService.java b/src/main/java/com/se/simu/service/UwService.java index 442c80c..6cda612 100644 --- a/src/main/java/com/se/simu/service/UwService.java +++ b/src/main/java/com/se/simu/service/UwService.java @@ -4,14 +4,12 @@ import com.se.simu.config.PropertiesConfig; import com.se.simu.domain.dto.ConfigDto; import com.se.simu.domain.po.DataPo; +import com.se.simu.helper.WebHelper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; +import java.io.*; /** * 鍐呮稘姹傝В鍣ㄦ湇鍔$被 @@ -44,8 +42,64 @@ fw.close(); } - public void callExe() { - // + public String callExe(DataPo data) throws Exception { + String cmd = String.format("%s %d %s", config.getSolverBat(), WebHelper.getCpuCores(), data.getInPath() + ".json"); + + return exec(cmd); + } + + private String exec(String cmd) throws Exception { + Process process = null; + BufferedReader nr = null; + BufferedReader er = null; + try { + // new String[] { "/bin/sh", "-c", cmd } + process = Runtime.getRuntime().exec(cmd); + nr = new BufferedReader(new InputStreamReader(process.getInputStream())); + er = new BufferedReader(new InputStreamReader(process.getErrorStream())); + + String errorLine; + while ((errorLine = er.readLine()) != null) { + log.warn(errorLine); + } + + String line; + StringBuilder sb = new StringBuilder(); + while ((line = nr.readLine()) != null) { + sb.append(line); + } + + // 绛夊緟绋嬪簭鎵ц缁撴潫骞惰緭鍑虹姸鎬� + int exitCode = process.waitFor(); + + return sb.toString(); + } catch (Exception ex) { + throw ex; + } finally { + closeReader(er); + closeReader(nr); + closeProcess(process); + } + } + + private static void closeReader(Reader reader) { + if (null != reader) { + try { + reader.close(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + } + } + + private static void closeProcess(Process process) { + if (null != process) { + try { + process.destroy(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + } } public void copeWaterFiles() { -- Gitblit v1.9.3