ProcessBuilder 用法详解 超、凢脫俗 2022-01-06 14:43 635阅读 0赞 **原文:https://blog.csdn.net/zhoujing\_0424/article/details/79917368 ** 1. 简介 ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处来实现进程的控制管理。 每个 ProcessBuilder 实例管理一个进程属性集。它的start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程。2. 示例 下面是一个使用修改过工作目录和环境启动进程的例子,并重定向标准输出和标准错误到自定义日志文件。 ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); //设置环境变量,初始值是当前进程环境的一个副本System.getenv() 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")); File log = new File("log"); //redirectErrorStream 属性默认值为false,意思是子进程的标准输出和错误输出被发送给两个独立的流,这些流可以通过 Process.getInputStream() 和 Process.getErrorStream() 方法来访问。 //如果将值设置为 true,标准错误将与标准输出合并。这使得关联错误消息和相应的输出变得更容易。在此情况下,合并的数据可从 Process.getInputStream() 返回的流读取,而从 Process.getErrorStream() 返回的流读取将直接到达文件尾。 pb.redirectErrorStream(true); pb.redirectOutput(Redirect.appendTo(log)); //启动进程 Process p = pb.start(); assert pb.redirectInput() == Redirect.PIPE; //重定向标准输出到日志 assert pb.redirectOutput().file() == log; assert p.getInputStream().read() == -1; 3. ProcessBuilder API //构造方法 //利用指定的操作系统程序和参数构造一个进程生成器。 ProcessBuilder(List<String> command) //利用指定的操作系统程序和参数构造一个进程生成器。 ProcessBuilder(String… command) //方法 //返回此进程生成器的操作系统程序和参数。 command() //设置此进程生成器的操作系统程序和参数。 command(List<String> command) //设置此进程生成器的操作系统程序和参数。 command(String… command) //返回此进程生成器的工作目录。 directory() //设置此进程生成器的工作目录。 directory(File directory) //返回此进程生成器环境的字符串映射视图。 environment方法获得运行进程的环境变量,得到一个Map,可以修改环境变量 environment() //返回进程生成器是否合并标准错误和标准输出;true为合并,false为不合并 redirectErrorStream() //设置此进程生成器的 redirectErrorStream 属性。默认值为false不合并 redirectErrorStream(boolean redirectErrorStream) //使用此进程生成器的属性启动一个新进程。 start()
相关 JNDI用法详解 > JNDI全称(Java Naming and Directory Interface),是java命名和目录接口。它是一个应用程序设计的API,为开发人员提供了查找和访问各 谁践踏了优雅/ 2022年12月23日 12:26/ 0 赞/ 233 阅读
相关 const用法详解 一、定义常量 使用\define的不安全性 include <iostream> using namespqce std; int main( 怼烎@/ 2022年12月19日 11:43/ 0 赞/ 158 阅读
相关 defaultdict用法详解 defaultdict用法详解 defaultdict与dict区别 defaultdict使用方法 defaultdict与dict区别 ゞ 浴缸里的玫瑰/ 2022年10月08日 05:48/ 0 赞/ 188 阅读
相关 @ModelAttribute用法详解 转载于:[https://blog.csdn.net/harry\_zh\_wang/article/details/57329613][https_blog.csdn.net 傷城~/ 2022年05月27日 00:39/ 0 赞/ 261 阅读
相关 FormData用法详解 转载自:[https://blog.csdn.net/zqian1994/article/details/79635413][https_blog.csdn.net_zqian - 日理万妓/ 2022年05月08日 08:46/ 0 赞/ 352 阅读
相关 FormData用法详解 FormData 对象: ![formdata][] 一.创建一个formData对象实例的方式 1、创建一个空对象 var formData = new 爱被打了一巴掌/ 2022年03月22日 03:15/ 0 赞/ 307 阅读
相关 ProcessBuilder 用法详解 原文:https://blog.csdn.net/zhoujing\_0424/article/details/79917368 1. 简介 ProcessBuilde 超、凢脫俗/ 2022年01月06日 14:43/ 0 赞/ 636 阅读
相关 JavaSE_指令_ProcessBuilder JavaSE\_指令\_ProcessBuilder 说明 示例代码 场景 实现 说明 此类用于创建操作系统进程。 每个 ╰半夏微凉°/ 2021年10月06日 03:50/ 0 赞/ 271 阅读
相关 @RequestMapping用法详解 一、@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于S 比眉伴天荒/ 2021年10月01日 00:18/ 0 赞/ 396 阅读
还没有评论,来说两句吧...