Java虛擬機讀寫其他進程的數據 – JAVA編程語言程序開發技術文章

使用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();

 }

}

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *