使用Java的Runtime类
-exec以一个独立进程执行命令cmd,并返回Process句柄
-当独立进程启动后,需要处理该进程的输出流/错误流:1)调用Process.getInputStream可以获取进程的输出流;2)调用Process.getErrorStream可以获取进程的错误输出流
-调用Process.waitFor等待目标进程的终止(当前进程阻塞)
exec
command-命令字符串;cmdarray-命令以及参数组成的数组;envp-环境变量; dir-指定目录下执行
示例:
package com.welldone.my.learn.cmd;
import java.io.BufferedReader;
import java.io.IOException;import java.io.InputStreamReader;
public class JavaExec0 {
public static void main(String[] args) {
Process p;
String cmds = "ipconfig /all";
try {
//执行命令
p = Runtime.getRuntime().exec(cmds);
//获取输出流,并包装到BufferedReader中
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
int exitValue = p.waitFor();
System.out.println("进程返回值:" + exitValue);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package com.welldone.my.learn.cmd;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class JavaExec2 {
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime();
try {
Process process = rt.exec("javac");
BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
int exitValue = process.waitFor();
System.out.println("进程返回值:" + exitValue);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}