JDK5的ProcessBuilder介绍和使用实例

一、JDK中的介绍摘录

此类用于创建操作系统进程。

每个 ProcessBuilder 实例管理一个进程属性集。start() 方法利用这些属 性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利 用相同的或相关的属性创建新的子进程。

每个进程生成器管理这些进程属性:

* 命令

是一个字符串列表,它表示要调用的外部程序文件及其参数(如果有)。在 此,表示有效的操作系统命令的字符串列表是依赖于系统的。例如,每一个总体 变量,通常都要成为此列表中的元素,但有一些操作系统,希望程序能自己标记 命令行字符串——在这种系统中,Java 实现可能需要命令确切地包含这两个元 素。

* 环境

是从变量 到值 的依赖于系统的映射。初始值是当前进程环境的一个副本( 请参阅 System.getenv())。

* 工作目录

默认值是当前进程的当前工作目录,通常根据系统属性 user.dir 来命名。

* redirectErrorStream 属性

最初,此属性为 false,意思是子进程的标准输出和错误输出被发送给两个 独立的流,这些流可以通过Process.getInputStream() 和 Process.getErrorStream() 方法来访问。如果将值设置为 true,标准错误将与 标准输出合并。这使得关联错误消息和相应的输出变得更容易。在此情况下,合 并的数据可从 Process.getInputStream() 返回的流读取,而从 Process.getErrorStream() 返回的流读取将直接到达文件尾。

修改进程构建器的属性将影响后续由该对象的 start() 方法启动的进程,但 从不会影响以前启动的进程或 Java 自身的进程。

大多数错误检查由 start() 方法执行。可以修改对象的状态,但这样 start() 将会失败。例如,将命令属性设置为一个空列表将不会抛出异常,除非 包含了 start()。

注意,此类不是同步的。如果多个线程同时访问一个 ProcessBuilder,而其 中至少一个线程从结构上修改了其中一个属性,它必须 保持外部同步。

很容易启动一个使用默认工作目录和环境的新进程:

Process p = new ProcessBuilder("myCommand", "myArg").start();

下面是一个利用修改过的工作目录和环境启动进程的例子:

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
   Map<String, String> env = pb.environment();
   env.put("VAR1", "myValue");
   env.remove("OTHERVAR");
   env.put("VAR2", env.get("VAR1") + "suffix");
   pb.directory(new File("myDir"));
   Process p = pb.start();

时间: 2024-08-31 16:31:31

JDK5的ProcessBuilder介绍和使用实例的相关文章

MongoDB中的bson介绍和使用实例

  这篇文章主要介绍了MongoDB中的bson介绍和使用实例,本文讲解了什么是bson.bson在MongoDB中的使用.几个BSON的例子等内容,需要的朋友可以参考下 一.什么是bson BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型. BSON可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,

Application 简介绍与计数器实例

application 简介绍与计数器实例 event-handling方法描述 application_start()发生当应用程序的开始 这是他第一次收到任何用户的要求. application_end()发生当应用程序正在关闭的时候,通常而言,是因为网络服务器正在重新启动. application_beginrequest()中,发生在每个请求的应用得到的,就在这个页面代码被执行. application_endrequest() 简单存值实例 <%@ page language="

商品搜索引擎---分词(插件介绍与入门实例)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 最近刚好在学习搜索引擎分词,有了解一些分词插件,在这里给各位猿友分享一下. 本文主要介绍四个分词插件(ICTCLAS.IKAnalyzer.Ansj.Jcseg)和一种自己写算法实现的方式,以及一些词库的推荐. 一.ICTCLAS 1.1.介绍 中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS

php的Memcache方法介绍及应用实例

网络开发中,特别是大访问量的web项目开发中.为提高响应速度,减少数据查询运算都会选用memcache. 现在网上介绍Memcache安装的已经很多,不再赘述.再次着重介绍memcache的一些常用方法. Memcache::add // 添加一个值,如果已经存在,则返回false Memcache::addServer // 添加Memcache地址 Memcache::close // 关闭一个Memcache的连接 Memcache::connect // 打开一个到Memcache的连接

PHP ignore_user_abort函数详细介绍和使用实例_php技巧

ignore_user_abort 设置与客户机断开是否会终止脚本的执行. 本函数返回 user-abort 设置的之前的值(一个布尔值). int ignore_user_abort ([ string $value ] )  参数setting描述:可选.如果设置为 true,则忽略与用户的断开,如果设置为 false,会导致脚本停止运行. 如果未设置该参数,会返回当前的设置. 注释:PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止.简单地使用 echo 语句无法确保信息发

Java中三种简单注解介绍和代码实例_java

简单Java注解 JDK5提供的简单注解类型只有3个. 这三个都是用来预防错误或者进行提醒的,分别是: 1.Override 2.Deprecated 3.Suppresswarnings 需要注意,JDK5(另一个说法,Tiger)实际上并没有许多内置注解;相反,它允许核心Java支持注解特性的能力. JSR-175中严格规定它用来定义元数据功能. 需要由程序员编写自定义的注解类型,其他JSR标准也编写了一系列标准注解类型. 下面将用实例来深入讲解这三个简单注解. Override 注解 Ov

CGroup 介绍、应用实例及原理描述

CGroup 介绍 CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制.记录.隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制.2007 年进入 Linux 2.6.24 内核,CGroups 不是全新创造的,它将进程管理从 cpuset 中剥离出来,作者是 Google 的 Paul Menage.CGroups 也是 LXC 为实现虚拟化所使用的资源管理手段. CGroup 功能及组

纯Python开发的nosql数据库CodernityDB介绍和使用实例_python

看看这个logo,有些像python的小蛇吧 .这次介绍的数据库codernityDB是纯python开发的. 先前用了下tinyDB这个本地数据库,也在一个api服务中用了下,一开始觉得速度有些不给力,结果一看实现的方式,真是太鸟了,居然就是json的存储,连个二进制压缩都没有.  这里介绍的CodernityDB 也是纯开发的一个小数据库. CodernityDB是开源的,纯Python语言(没有第三方依赖),快速,多平台的NoSQL型数据库.它有可选项支持HTTP服务版本(Codernit

Linux磁盘管理之df命令详细介绍和使用实例

 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all  显示目录中个别文件的大小.    -b或-bytes  显示目录或文件大小时,以byte为单位.    -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和.  -k或--kilobytes  以KB(1024bytes)为单位输出. -m或--megabytes  以MB为单位输出.    -s或--summarize  仅显示总计,