Java Process类的详解及实例代码

2025-05-29 0 55

Java Process类的详解

前言:

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

对Process类的简要说明:

Process类是一个抽象类,方法都是抽象的,它封装了一个进程,也就是一个可执行的程序 该类提供进程的输入、执行输出到进程、等待进程的完成和检查进程的退出状态及销毁进程的方法

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

其它的概要请参考JDK文档

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

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

}

}

}

?

1

2

3

4

5

6

7

8

9

10

11

12

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)使用它的其它构造方法执行相关的命令,如下例:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

}

}

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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)列出系统正在运行的所有进程信息

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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

}

}

}

}

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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)判断一个具体的进程是否正在运行,如下例:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

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){

}

}

}

}

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

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){

}

}

}

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/qq_35101189/article/details/58057976

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java Process类的详解及实例代码 https://www.kuaiidc.com/118310.html

相关文章

发表评论
暂无评论