我正在尝试使用ProcessBuilder类通过Java启动外部进程,这样做很有效。目前正在使用命令运行:
new ProcessBuilder("java", "-jar", jarfile, args);
我想做的只是这个,但要以低优先级启动流程。我的程序目前只在Windows上运行,因此我可以使用特定于窗口的解决方案。一些研究建议我使用“start”命令,但是当我尝试从Java执行此操作时,它会给出一个例外,说它是一个无法识别的命令(同样的命令可以在cmd.exe中运行)。
是否有人知道如何从Java启动流程(如果需要,可以使用Windows),优先级为belownormal
?
答案 0 :(得分:16)
使用start command。它依赖于Windows,但可以满足您的需求。我have read没有跨平台的方式。
ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal javaws -version");
System.out.println("Before start");
Process start = pb.start();
甚至可以读取输入结束错误流。
等待:
ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal /WAIT javaws -sdasd");
System.out.println("Before start");
Process start = pb.start();
start.waitFor();
System.out.println("Done");
过早毁灭:
ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal /WAIT javaws -sdasd");
System.out.println("Before start");
Process start = pb.start();
start.destroy();
start.waitFor();
System.out.println("Done");