我有一个程序使用ProcessBuilder
来运行不同的程序。
我的代码如下所示:
public class runMultiClient {
public static void main(String[] args){
if (args[0].matches("-f")){
String dir = System.getProperty("user.dir");
String path = dir + "\\" + args[1];
FileReader fr;
try {
fr = new FileReader(path);
BufferedReader bf = new BufferedReader(fr);
String line = "";
Process PR = null;
while ((line = bf.readLine()) != null){
String[] tk = line.split(" ");
String[] cmd = {"javaw", "-jar", "ntripClient.jar", "-a", tk[0], "-p", tk[1],
"-u", tk[2], "-pw", tk[3], "-m", tk[4], "-t", tk[5], "-s", tk[6]};
ProcessBuilder pb = new ProcessBuilder(cmd);
PR = pb.start();
}
PR.waitFor();
}
catch (FileNotFoundException ex) {ex.printStackTrace();}
catch (IOException ex) {ex.printStackTrace();}
catch (InterruptedException ex) {ex.printStackTrace();}
}
}}
我从cmd运行这个程序。它除了包含每行数据的启动文件的名称。 基于此文件,它假设创建了几个进程。
然而,它并不顺利。现在我在启动文件中有2行,这意味着应该启动两个进程。 它实际上做的是启动第一个进程,然后停止它并启动第二个进程。另一个问题是,我不知道如何杀死进程,它似乎在后台运行,并没有出现在任务管理器中。 Crtl + C 和 Ctrl + Break 不起作用。
主要目标是在同一时间运行多个流程,并在需要时能够中断流程。 我错过了什么?我该如何解决这个问题? 任何帮助,将不胜感激。
答案 0 :(得分:0)
如果没有能够重现这一点(由于缺乏主题JAR),可能会发生以下三种情况之一:
有些事情要尝试: