Runtime.getRuntime().exec方法

编程入门 行业动态 更新时间:2024-10-04 13:32:46

Runtime.getRuntime().exec<a href=https://www.elefans.com/category/jswz/34/1771314.html style=方法"/>

Runtime.getRuntime().exec方法

Runtime.getRuntime().exec()方法主要用于执行外部的程序或命令。

Runtime.getRuntime().exec共有六个重载方法:

  • public Process exec(String command)

    在单独的进程中执行指定的字符串命令。

  • public Process exec(String [] cmdArray)

        在单独的进程中执行指定命令和变量

  • public Process exec(String command, String [] envp)

    在指定环境的独立进程中执行指定命令和变量

  • public Process exec(String [] cmdArray, String [] envp)

    在指定环境的独立进程中执行指定的命令和变量

  • public Process exec(String command,String[] envp,File dir)

    在有指定环境和工作目录的独立进程中执行指定的字符串命令

  • public Process exec(String[] cmdarray,String[] envp,File dir)

    在指定环境和工作目录的独立进程中执行指定的命令和变量

我们先来比较exec(String command)与exec(String[] cmdArray)的区别,其实他们是等价的,最终都会调用:

exec(String[] cmdarray,String[] envp,File dir),我们看看方法exec(String cmdarray,String[] envp,File dir) throws IOException的实现代码:

?
1 2 3 4 5 6 7 8 public  Process exec(String command, String[] envp, File dir)  throws  IOException {      if  (command.length() ==  0 throw  new  IllegalArgumentException( "Empty command" );      StringTokenizer st =  new  StringTokenizer(command);      String[] cmdarray =  new  String[st.countTokens()];      for  ( int  i =  0 ; st.hasMoreTokens(); i++)          cmdarray[i] = st.nextToken();      return  exec(cmdarray, envp, dir); }

从上面的代码,我们可以看出最终调用的代码都是:exec(String[] cmdArray,String envp,File  dir)。exec(String command)相当于exec(command,null,null),exec(String[] cmdArray)相当于exec(cmdArray,null,null)。

参数说明:

cmdarray - 包含所调用命令及其参数的数组。

envp - 字符串数组,其中每个元素的环境变量的设置格式为 name=value,如果子进程应该继承当前进程的环境,或该参数为 null。

dir - 子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为 null。


另外,执行exec(String command)不等同于直接执行command line命令,比如命令:

?
1 javap -l xxx > output.txt

这时要用exec(String[] cmdArray)。如例:

?
1 2 Process p = Runtime.getRuntime().exec( new  String[]{ "/bin/sh" , "-c" ,      "javap -l xxx > output.txt" });


关于返回结果类型:Process,它有几个方法:

1.destroy():杀掉子进程

2.exitValue():返回子进程的出口值,值 0 表示正常终止

3.getErrorStream():获取子进程的错误流

4.getInputStream():获取子进程的输入流

5.getOutputStream():获取子进程的输出流

6.waitFor():导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程,根据惯例,0 表示正常终止

更多推荐

Runtime.getRuntime().exec方法

本文发布于:2024-02-28 05:13:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768366.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法   Runtime   getRuntime   exec

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!