package mldn.basic;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class PingWWW {
public static void main(String[] args) {
BufferedReader br = null;
try {
Process p = Runtime.getRuntime().exec("ping www.baidu.com");
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
public abstract class Process extends Object
ProcessBuilder.start()和Runtime.exec方法创建一个本机进程,并返回process子类的一个实例,该实例可用来控制进程并获取相关信息。Process类提供了执行从进程输入、执行输出到等待进程完成、检查进程的退出状态及销毁(杀掉)进程的方法。
创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows上的Win16/Dos进程,或者Shell脚本。创建的子进程没有自己的终端或控制台。它的所有标准io(即 stdin、stdout和stderr)操作都将通过三个流(getOutputStream()、getInputStream()、getErrorStream())重定向到父进程。父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。
当没有 Process
对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。
对于带有 Process
对象的 Java 进程,没有必要异步或并发执行由 Process
对象表示的进程。
方法摘要 | |
---|---|
abstract | destroy() 杀掉子进程。 |
abstract | exitValue() 返回子进程的出口值。 |
abstract InputStream | getErrorStream() 获取子进程的错误流。 |
abstract InputStream | getInputStream() 获取子进程的输入流。 |
abstract OutputStream | getOutputStream() 获取子进程的输出流。 |
abstract | waitFor() 导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止 |
实例:java程序中运行Ping命令