Java运行Linux原生程序
2017-08-31 16:32:21    232    1    0
gaara
 try {
            String cmdString = "docker ps";
            System.out.println(cmdString);
            Runtime rt = Runtime.getRuntime();
            Process p = rt.exec(cmdString);
            BufferedReader read = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = null;
            out.println("<script>");
            while((line = read.readLine())!=null){
                System.out.println(line);
                out.println("document.write('<div>" + line + "</div>');");
            }
            out.println("</script>");
            out.flush();
        } catch (Exception e) {
            // TODO: handle exception
        }

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。

可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。

例如可以调用Windows的notepad的话

Process p = rt.exec("notepad");

通过exec方法创建一个子进程,结果返回一个Process类的实例

p.destroy();销毁之。

ProcessBuilder.start() 和Process 

ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息。

ProcessBuilder 、Runtime区别

ProcessBuilder.start() 和 Runtime.exec()传递的参数有所不同,Runtime.exec()可接受一个单独的字符串,这个字符串是通过空格来分隔可执行命令程序和参数的;

也可以接受字符串数组参数。而ProcessBuilder的构造函数是一个字符串列表或者数组。列表中第一个参数是可执行命令程序,其他的是命令行执行是需要的参数。 

代码如下:ProcessBuilderTest.java  PBDemo.java

通过查看JDK源码可知,Runtime.exec最终是通过调用ProcessBuilder来真正执行操作的

Pre: ProcessBuilderTest.java

Next: No Post

232
Sign in to leave a comment.
No Leanote account? Sign up now.
0 comments
Table of content