|
@@ -4,6 +4,7 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Field;
|
|
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
@@ -18,10 +19,10 @@ public class ProcessManager {
|
|
|
private final Map<String, Process> processMap = new ConcurrentHashMap<>();
|
|
private final Map<String, Process> processMap = new ConcurrentHashMap<>();
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 启动进程
|
|
|
|
|
|
|
+ * 启动进程(命令参数列表,避免字符串 split 导致路径含空格时异常或注入)
|
|
|
*/
|
|
*/
|
|
|
- public Process startProcess(String command) throws IOException {
|
|
|
|
|
- ProcessBuilder processBuilder = new ProcessBuilder(command.split(" "));
|
|
|
|
|
|
|
+ public Process startProcess(List<String> command) throws IOException {
|
|
|
|
|
+ ProcessBuilder processBuilder = new ProcessBuilder(command);
|
|
|
Process process = processBuilder.start();
|
|
Process process = processBuilder.start();
|
|
|
|
|
|
|
|
String processId = getProcessId(process);
|
|
String processId = getProcessId(process);
|