Process是Java中表示外部进程的抽象类,通过Runtime.exec()或ProcessBuilder.start()启动子进程,可获取其输入、输出、错误流,控制进程执行并读取退出码。

Process 是 Java 中用于表示一个正在运行的外部进程的类。当你在 Java 程序中启动一个外部程序(比如运行一个可执行文件、调用系统命令等),JVM 会创建一个 Process 对象来代表这个子进程,通过它你可以控制进程并与其进行交互。
Process 的主要作用
Process 类位于 java.lang 包中,是抽象类,不能直接实例化。通常通过 Runtime.exec() 或 ProcessBuilder.start() 来启动一个进程,返回一个具体的 Process 子类实例。
它的核心功能包括:
- 获取进程的输入流(读取子进程输出)
- 获取进程的输出流(向子进程输入数据)
- 获取进程的错误流(读取错误信息)
- 等待进程结束
- 强制终止进程
- 获取进程退出码
常用方法说明
以下是 Process 类提供的一些关键方法:
立即学习“Java免费学习笔记(深入)”;
自从百度屏蔽淘宝客网站、淘宝抛弃淘宝客之后,个人站长集体陷入了恐慌之中。此时,什么值得买网的异军突起引起了广大个人站长的极大关注。做一个什么值得买一样的导购网站成了众多个人站长的一致心愿! TP-COUPON 导购系统 即是让个人站长实现此心愿的绝佳选择! 欢迎个人站长选用。V1.1版 更新记录:1.修正请求时查询淘宝店铺错误的bug2.删除一些无用的代码
- getInputStream():获取子进程的标准输出流,用于读取该进程输出的内容。
- getOutputStream():获取子进程的标准输入流,可用于向进程发送输入。
- getErrorStream():获取子进程的错误输出流,用于读取错误信息。
- waitFor():阻塞当前线程,直到该进程结束,返回退出状态码。
- exitValue():立即返回进程的退出码,如果进程未结束会抛出 IllegalThreadStateException。
- destroy():请求终止进程(软终止)。
- destroyForcibly():强制终止进程。
- isAlive():判断进程是否仍在运行。
简单使用示例
下面是一个运行系统命令并读取输出的示例:
Process process = Runtime.getRuntime().exec("ping www.baidu.com");
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
int exitCode = process.waitFor();
System.out.println("进程退出码:" + exitCode);
这段代码执行了 ping 命令,并逐行读取其输出结果,最后等待进程结束并打印退出码。
注意事项
使用 Process 时需要注意以下几点:
- 及时处理输入/输出流,避免缓冲区堵塞导致进程挂起。
- 错误流和输出流最好分别处理,否则可能造成死锁。
- 推荐使用 ProcessBuilder 替代 Runtime.exec(),它提供了更灵活的配置方式,如设置工作目录、环境变量等。
- 跨平台时注意命令的兼容性(例如 Windows 使用 cmd /c dir,Linux 使用 ls)。










