java如何开启进程
开启进程的方法
在Java中开启进程可以通过ProcessBuilder或Runtime.exec()实现。以下是具体实现方式:

使用ProcessBuilder
ProcessBuilder提供了更灵活的方式来启动进程,支持设置工作目录、环境变量等。

ProcessBuilder processBuilder = new ProcessBuilder("command", "arg1", "arg2");
processBuilder.directory(new File("工作目录路径"));
Process process = processBuilder.start();
// 获取进程输出流
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待进程结束
int exitCode = process.waitFor();
System.out.println("进程退出码: " + exitCode);
使用Runtime.exec()
Runtime.exec()是传统的启动进程方式,适合简单场景。
Process process = Runtime.getRuntime().exec("command arg1 arg2");
// 处理输出流
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待进程结束
int exitCode = process.waitFor();
System.out.println("进程退出码: " + exitCode);
注意事项
- 必须处理进程的输入流、输出流和错误流,避免进程阻塞。
- 使用
waitFor()等待进程结束,避免主线程提前退出。 - 对于复杂命令,建议使用
ProcessBuilder,因其支持参数列表化,避免字符串解析问题。
示例:启动Python脚本
ProcessBuilder pb = new ProcessBuilder("python", "script.py", "arg1");
pb.directory(new File("/path/to/script"));
Process p = pb.start();
// 读取输出
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
int exitCode = p.waitFor();
System.out.println("Python脚本退出码: " + exitCode);






