Java Process类的浅学习


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

对Process类的简要说明:

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

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

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

其它的概要请参考JDK文档

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

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

Java代码 复制代码
  1. package com.iwtxokhtd.other;
  2. import java.io.IOException;
  3. public class ProcessTest {
  4. public static void main(String[] args) {
  5. try {
  6. Process proc=Runtime.getRuntime().exec("notepad");
  7. } catch (IOException e) {
  8. // TODO Auto-generated catch block
  9. e.printStackTrace();
  10. }
  11. }
  12. }
  1. package com.iwtxokhtd.other;
  2. import java.io.IOException;
  3. public class ProcessTest {
  4. public static void main(String[] args) {
  5. try {
  6. Process proc=Runtime.getRuntime().exec("notepad");
  7. } catch (IOException e) {
  8. // TODO Auto-generated catch block
  9. e.printStackTrace();
  10. }
  11. }
  12. }
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. import java.io.IOException;
  3. public class ProcessTest {
  4. public static void main(String[] args) {
  5. try {
  6. String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";
  7. String message="www.google.com";
  8. String []cmd={exeFullPathName,message};
  9. Process proc=Runtime.getRuntime().exec(cmd);
  10. } catch (IOException e) {
  11. // TODO Auto-generated catch block
  12. e.printStackTrace();
  13. }
  14. }
  15. }
  1. package com.iwtxokhtd.other;
  2. import java.io.IOException;
  3. public class ProcessTest {
  4. public static void main(String[] args) {
  5. try {
  6. String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";
  7. String message="www.google.com";
  8. String []cmd={exeFullPathName,message};
  9. Process proc=Runtime.getRuntime().exec(cmd);
  10. } catch (IOException e) {
  11. // TODO Auto-generated catch block
  12. e.printStackTrace();
  13. }
  14. }
  15. }
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. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. public class ListAllProcessTest {
  6. //列出所有的进程信息
  7. public static void main(String[] args) {
  8. BufferedReader br=null;
  9. try {
  10. Process proc=Runtime.getRuntime().exec("tasklist");
  11. br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
  12. @SuppressWarnings("unused")
  13. String line=null;
  14. System.out.println("打印所有正在运行的进程信息");
  15. while((line=br.readLine())!=null){
  16. System.out.println(br.readLine());
  17. }
  18. } catch (IOException e) {
  19. e.printStackTrace();
  20. }finally{
  21. if(br!=null){
  22. try {
  23. br.close();
  24. } catch (Exception e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  29. }
  30. }
  1. package com.iwtxokhtd.other;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. public class ListAllProcessTest {
  6. //列出所有的进程信息
  7. public static void main(String[] args) {
  8. BufferedReader br=null;
  9. try {
  10. Process proc=Runtime.getRuntime().exec("tasklist");
  11. br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
  12. @SuppressWarnings("unused")
  13. String line=null;
  14. System.out.println("打印所有正在运行的进程信息");
  15. while((line=br.readLine())!=null){
  16. System.out.println(br.readLine());
  17. }
  18. } catch (IOException e) {
  19. e.printStackTrace();
  20. }finally{
  21. if(br!=null){
  22. try {
  23. br.close();
  24. } catch (Exception e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  29. }
  30. }
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. if(findProcess("QQ.exe")){
  8. System.out.println("------判断指定的进程是否在运行------");
  9. System.out.println("QQ.exe该进程正在运行!");
  10. }else{
  11. System.out.println("------判断指定的进程是否在运行------");
  12. System.out.println("QQ.exe该进程没有在运行!");
  13. }
  14. }
  15. public static boolean findProcess(String processName){
  16. BufferedReader br=null;
  17. try{
  18. //下面这句是列出含有processName的进程图像名
  19. Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");
  20. br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
  21. String line=null;
  22. while((line=br.readLine())!=null){
  23. //判断指定的进程是否在运行
  24. if(line.contains(processName)){
  25. return true;
  26. }
  27. }
  28. return false;
  29. }catch(Exception e){
  30. e.printStackTrace();
  31. return false;
  32. }finally{
  33. if(br!=null){
  34. try{
  35. br.close();
  36. }catch(Exception ex){
  37. }
  38. }
  39. }
  40. }
  41. }
  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. if(findProcess("QQ.exe")){
  8. System.out.println("------判断指定的进程是否在运行------");
  9. System.out.println("QQ.exe该进程正在运行!");
  10. }else{
  11. System.out.println("------判断指定的进程是否在运行------");
  12. System.out.println("QQ.exe该进程没有在运行!");
  13. }
  14. }
  15. public static boolean findProcess(String processName){
  16. BufferedReader br=null;
  17. try{
  18. //下面这句是列出含有processName的进程图像名
  19. Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");
  20. br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
  21. String line=null;
  22. while((line=br.readLine())!=null){
  23. //判断指定的进程是否在运行
  24. if(line.contains(processName)){
  25. return true;
  26. }
  27. }
  28. return false;
  29. }catch(Exception e){
  30. e.printStackTrace();
  31. return false;
  32. }finally{
  33. if(br!=null){
  34. try{
  35. br.close();
  36. }catch(Exception ex){
  37. }
  38. }
  39. }
  40. }
  41. }
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文档,这里就不一一举例,毕竟它用得不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值