码迷,mamicode.com
首页 > 编程语言 > 详细

用Java创建操作系统进程

时间:2014-08-25 16:47:24      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:blog   http   java   io   文件   for   ar   数据   art   

示例代码:

public void start() throws Exception {
	String separator = System.getProperty("file.separator");
	String classpath = System.getProperty("java.class.path");
	String path = System.getProperty("java.home")
                + separator + "bin" + separator + "java";
	ProcessBuilder processBuilder = 
                new ProcessBuilder(path, "-cp", 
                classpath, 
                AnotherClassWithMainMethod.class.getName());
processBuilder.redirectErrorStream(true); Process process = processBuilder.start(); process.waitFor(); }

以上可知,ProcessBuilder启动进程时更加灵活,能设置classPath等参数。

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

另外,JVM与新起的进程之间会建立三个管道连接:标准输入,标准输出和标准错误流。假设该程序不断在向标准输出流和标准错误流写数据,而JVM不读取的话,当缓冲区满之后将无法继续写入数据,最终造成阻塞。waitFor方法就是一直等到该 Process 对象表示的进程终止,该方法才返回。

 

http://stackoverflow.com/questions/3263130/processbuilder-start-another-process-jvm-howto

用Java创建操作系统进程

标签:blog   http   java   io   文件   for   ar   数据   art   

原文地址:http://www.cnblogs.com/vincentf/p/3935176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!