java呼叫bat&監控windows下的某一程式是否關閉

悠悠隱於市發表於2011-02-12

java呼叫bat&監控windows下的某一程式是否關閉


java呼叫bat:如果要和Runtime建立的程式互動,必須自己寫互動的程式碼,例如通過socket,兩個java程式互相通訊。

Java程式碼 複製程式碼
  1. import java.io.IOException;   
  2.   
  3. public class Main {   
  4.   
  5. public static void main(String[] args){   
  6. try {   
  7. Runtime rt = Runtime.getRuntime();   
  8. rt.exec("cmd.exe /c start c:\\1.bat");   
  9. catch (IOException e) {   
  10. e.printStackTrace();   
  11. }   
  12. }   
  13. /* 1.bat的內容  
  14. * @echo off  
  15. * echo lsd>>c:\lsd.txt  
  16. *  
  17. * */  
  18. }  
import java.io.IOException;

public class Main {

public static void main(String[] args){
try {
Runtime rt = Runtime.getRuntime();
rt.exec("cmd.exe /c start c:\\1.bat");
} catch (IOException e) {
e.printStackTrace();
}
}
/* 1.bat的內容
* @echo off
* echo lsd>>c:\lsd.txt
*
* */
}
 



java監控windows下的某一程式是否關閉:應為這裡直接呼叫的作業系統帶的命令,所以可以直接用getInputStream()來獲得作業系統的反饋資訊。如果呼叫命令啟動另一個java應用,兩個java應用互相互動,則getInputStream()就沒用了。

Java程式碼 複製程式碼
  1. ProcessBuilder pb = new ProcessBuilder("tasklist");   
  2. try {   
  3. Process p = pb.start();   
  4. BufferedReader rb = new BufferedReader(new InputStreamReader(p.getInputStream()));   
  5. String line;   
  6. String storeLine="";   
  7. while((line=rb.readLine())!=null){   
  8. if(line.indexOf("eclipse.exe")!=-1)//過濾程式eclipse.exe的資訊   
  9. storeLine = line;   
  10. System.out.println(line);   
  11. }   
  12. //獲取程式的pid號   
  13. if(storeLine!=""){   
  14. int beginIndex = storeLine.indexOf("exe");   
  15. int endIndex = storeLine.indexOf("Console");   
  16. String pid = storeLine.substring(beginIndex+3, endIndex).trim();   
  17. System.out.println("this process id is "+pid);   
  18. }else{   
  19. System.out.println("this process is not exist");   
  20. }   

相關文章