使用java.lang.Process类的简单例子

发布时间:2019-11-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了使用java.lang.Process类的简单例子脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

PRocessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处来实现进程的控制管理。本文简单介绍一下Process类的用法以及一些需要注意的问题。

API方法说明如下:
- destroy() 杀掉子进程。
- exITValue() 返回子进程的出口值。该方法不阻塞,如果此 Process 对象表示的子进程尚未终止,就会抛出IllegalThreadStateException异常,中止进程
- getErrorStream() 获取子进程的错误流
- getInputStream() 获取子进程的输入流
- getOutputStream() 获取子进程的输出流,基本上不会用到输出流
- waitFor() 导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。导致当前线程等待,如有必要,一直要等到由该 Process对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程

一个简单的例子:

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

程序输出如下:

使用java.lang.Process类的简单例子

直接在WIN7的命令行执行命令:tasklist,输出结果如下:

使用java.lang.Process类的简单例子

注意问题:
因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。为了止进程无限阻塞或者死锁,使用Process类时,需要加上超时控制,详细内容可以看博文《Process工具类,提供设置timeout功能》

脚本宝典总结

以上是脚本宝典为你收集整理的使用java.lang.Process类的简单例子全部内容,希望文章能够帮你解决使用java.lang.Process类的简单例子所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。