使用Runtime對象的exec()方法可以獲得其他進程的Process對象,Process對象代表由該Java程序啟動的子進程,Process類提供瞭如下3個方法,用於讓程序和其子進程進行通訊。
InputStream getErrorStream():獲取子進程的錯誤流
InputStream getInputStream():獲取子進程的輸入流
OutputStream getOutputStream():獲取子進程的輸出流
下面的代碼實現瞭獲取子進程的錯誤輸出
[java]
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws Exception
{
Process p=Runtime.getRuntime().exec("adb");
BufferedReader br=new BufferedReader(new InputStreamReader(p.getErrorStream()));
String str=null;
while((str=br.readLine())!=null)
{
System.out.println(str);
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws Exception
{
Process p=Runtime.getRuntime().exec("adb");
BufferedReader br=new BufferedReader(new InputStreamReader(p.getErrorStream()));
String str=null;
while((str=br.readLine())!=null)
{
System.out.println(str);
}
}
}
下面程序演示兩個Java程序通訊
這個數父進程
[java]
import java.io.OutputStream;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws Exception
{
Process p=Runtime.getRuntime().exec("java work");
OutputStream os=p.getOutputStream();
PrintStream ps=new PrintStream(os);
ps.println("張譯成");
os.close();
}
}
import java.io.OutputStream;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws Exception
{
Process p=Runtime.getRuntime().exec("java work");
OutputStream os=p.getOutputStream();
PrintStream ps=new PrintStream(os);
ps.println("張譯成");
os.close();
}
}
下面是子進程
[java]
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;
public class work {
public static void main(String[] args) throws Exception{
Scanner sc=new Scanner(System.in);
FileOutputStream fis=new FileOutputStream("work");
PrintStream ps=new PrintStream(fis);
System.setOut(ps);
while(sc.hasNextLine())
{
System.out.println(sc.nextLine());
}
ps.close();
}
}
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;
public class work {
public static void main(String[] args) throws Exception{
Scanner sc=new Scanner(System.in);
FileOutputStream fis=new FileOutputStream("work");
PrintStream ps=new PrintStream(fis);
System.setOut(ps);
while(sc.hasNextLine())
{
System.out.println(sc.nextLine());
}
ps.close();
}
}