Java Process类的浅学习

Java Process类的浅学习

文章分类:Java编程

      今天用了下java.lang.Process类,只是初步的学习,并没有深入实践,因为感觉它的用途并不是很大,偶尔才可能用上,如果要经常使用它的人可以自行参考JDk文档。

      对Process类的简要说明:

     Process类是一个抽象类,方法都是抽象的,它封装了一个进程,也就是一个可执行的程序

     该类提供进程的输入、执行输出到进程、等待进程的完成和检查进程的退出状态及销毁进程的方法

     ProcessBuilder.start()和Runtime.exec方法创建一个本机进程并返回Process子类的一个实例,该实例可以控制进程并获取相关的信息

     其它的概要请参考JDK文档

     下面就开始举几个简单的示例:

     (1)执行简单的DOS命令,如打开一个记事本

    

Java代码 复制代码
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. public class ProcessTest {   
  6.   
  7.     public static void main(String[] args) {   
  8.         try {   
  9.                         Process proc=Runtime.getRuntime().exec("notepad");   
  10.         } catch (IOException e) {   
  11.             // TODO Auto-generated catch block   
  12.             e.printStackTrace();   
  13.         }   
  14.   
  15.     }   
  16.   
  17. }  
package com.iwtxokhtd.other;

import java.io.IOException;

public class ProcessTest {

	public static void main(String[] args) {
		try {
						Process proc=Runtime.getRuntime().exec("notepad");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

 

(2)使用它的其它构造方法执行相关的命令,如下例:

 

Java代码 复制代码
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. public class ProcessTest {   
  6.   
  7.     public static void main(String[] args) {   
  8.         try {   
  9.                
  10.             String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";   
  11.             String message="www.google.com";   
  12.             String []cmd={exeFullPathName,message};   
  13.             Process proc=Runtime.getRuntime().exec(cmd);   
  14.         } catch (IOException e) {   
  15.             // TODO Auto-generated catch block   
  16.             e.printStackTrace();   
  17.         }   
  18.   
  19.     }   
  20.   
  21. }  
package com.iwtxokhtd.other;

import java.io.IOException;

public class ProcessTest {

	public static void main(String[] args) {
		try {
			
			String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";
			String message="www.google.com";
			String []cmd={exeFullPathName,message};
			Process proc=Runtime.getRuntime().exec(cmd);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

 

执行上述命令可以打开Google网站

(3)列出系统正在运行的所有进程信息

  

Java代码 复制代码
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.IOException;   
  5. import java.io.InputStreamReader;   
  6.   
  7. public class ListAllProcessTest {   
  8.   
  9.     //列出所有的进程信息   
  10.     public static void main(String[] args) {   
  11.         BufferedReader br=null;   
  12.         try {   
  13.             Process proc=Runtime.getRuntime().exec("tasklist");   
  14.             br=new BufferedReader(new InputStreamReader(proc.getInputStream()));   
  15.             @SuppressWarnings("unused")   
  16.             String line=null;   
  17.             System.out.println("打印所有正在运行的进程信息");   
  18.             while((line=br.readLine())!=null){   
  19.                 System.out.println(br.readLine());   
  20.             }   
  21.         } catch (IOException e) {   
  22.             e.printStackTrace();   
  23.         }finally{   
  24.             if(br!=null){   
  25.                 try {   
  26.                     br.close();   
  27.                 } catch (Exception e) {   
  28.                     e.printStackTrace();   
  29.                 }   
  30.             }   
  31.         }   
  32.            
  33.   
  34.     }   
  35.   
  36. }  
package com.iwtxokhtd.other;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ListAllProcessTest {

	//列出所有的进程信息
	public static void main(String[] args) {
		BufferedReader br=null;
		try {
			Process proc=Runtime.getRuntime().exec("tasklist");
			br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
			@SuppressWarnings("unused")
			String line=null;
			System.out.println("打印所有正在运行的进程信息");
			while((line=br.readLine())!=null){
				System.out.println(br.readLine());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(br!=null){
				try {
					br.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		

	}

}

 

(4)判断一个具体的进程是否正在运行,如下例:

Java代码 复制代码
  1. package com.iwtxokhtd.other;   
  2. import java.io.BufferedReader;   
  3. import java.io.InputStreamReader;   
  4. public class FindProcessExeTest   
  5. {   
  6.     public static void main(String []args){   
  7.            
  8.         if(findProcess("QQ.exe")){   
  9.             System.out.println("------判断指定的进程是否在运行------");   
  10.             System.out.println("QQ.exe该进程正在运行!");   
  11.         }else{   
  12.             System.out.println("------判断指定的进程是否在运行------");   
  13.             System.out.println("QQ.exe该进程没有在运行!");   
  14.         }   
  15.   
  16.     }   
  17.     public static boolean findProcess(String processName){   
  18.         BufferedReader br=null;   
  19.         try{   
  20.               
  21.             //下面这句是列出含有processName的进程图像名   
  22.             Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");   
  23.             br=new BufferedReader(new InputStreamReader(proc.getInputStream()));   
  24.             String line=null;   
  25.             while((line=br.readLine())!=null){   
  26.                 //判断指定的进程是否在运行   
  27.                 if(line.contains(processName)){   
  28.                     return true;   
  29.                 }   
  30.             }   
  31.                
  32.             return false;   
  33.         }catch(Exception e){   
  34.             e.printStackTrace();   
  35.             return false;   
  36.         }finally{   
  37.             if(br!=null){   
  38.                 try{   
  39.                     br.close();   
  40.                 }catch(Exception ex){   
  41.                 }   
  42.             }   
  43.                
  44.         }   
  45.     }   
  46. }  
package com.iwtxokhtd.other;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class FindProcessExeTest
{
	public static void main(String []args){
		
		if(findProcess("QQ.exe")){
			System.out.println("------判断指定的进程是否在运行------");
			System.out.println("QQ.exe该进程正在运行!");
		}else{
			System.out.println("------判断指定的进程是否在运行------");
			System.out.println("QQ.exe该进程没有在运行!");
		}

	}
	public static boolean findProcess(String processName){
		BufferedReader br=null;
		try{
           
			//下面这句是列出含有processName的进程图像名
			Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");
			br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
			String line=null;
			while((line=br.readLine())!=null){
				//判断指定的进程是否在运行
				if(line.contains(processName)){
					return true;
				}
			}
			
			return false;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}finally{
			if(br!=null){
				try{
					br.close();
			    }catch(Exception ex){
				}
			}
			
		}
	}
}

 

 其它的用法可以参考JDK文档,这里就不一一举例,毕竟它用得不多。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值