`
Hillen.chan
  • 浏览: 62916 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Runtime.exec()的用法

阅读更多
public Process exec(String command)
            throws IOException在单独的进程中执行指定的字符串命令。
这是一个很有用的方法。对于 exec(command) 形式的调用而言,其行为与调用 exec(command, null, null) 完全相同。


参数:
command - 一条指定的系统命令。
返回:
一个新的 Process 对象,用于管理子进程
抛出:
SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程
IOException - 如果发生 I/O 错误
NullPointerException - 如果 command 为 null
IllegalArgumentException - 如果 command 为空


public Process exec(String command,
                    String[] envp)
            throws IOException在指定环境的单独进程中执行指定的字符串命令。
这是一个很有用的方法。对于 exec(command, envp) 形式的调用而言,其行为与调用 exec(command, envp, null) 完全相同。


参数:
command - 一条指定的系统命令。
envp - 字符串数组,其中每个元素的环境变量的设置格式为 name=value;如果子进程应该继承当前进程的环境,或该参数为 null。
返回:
一个新的 Process 对象,用于管理子进程
抛出:
SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程
IOException - 如果发生 I/O 错误
NullPointerException - 如果 command 为 null,或 envp 的元素之一为 null
IllegalArgumentException - 如果 command 为空


public Process exec(String command,
                    String[] envp,
                    File dir)
            throws IOException在有指定环境和工作目录的独立进程中执行指定的字符串命令。
这是一个很有用的方法。对于 exec(command, envp, dir) 形式的调用而言,其行为与调用 exec(cmdarray, envp, dir) 完全相同,其中 cmdarray 是 command 中所有标记的数组。

更准确地说,可以使用通过调用 new StringTokenizer(command) 创建的 StringTokenizer 将 command 字符串拆解成标记,调用时不对字符类别做进一步的修改。然后将标记生成器所生成的标记以相同的顺序放入新的字符串数组 cmdarray 中。


参数:
command - 一条指定的系统命令。
envp - 字符串数组,其中每个元素的环境变量的设置格式为 name=value;如果子进程应该继承当前进程的环境,或该参数为 null。
dir - 子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为 null。
返回:
一个新的 Process 对象,用于管理子进程
抛出:
SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程
IOException - 如果发生 I/O 错误
NullPointerException - 如果 command 为 null,或者 envp 的某个元素为 null
IllegalArgumentException - 如果 command 为空


public Process exec(String[] cmdarray)
            throws IOException在单独的进程中执行指定命令和变量。
这是一个很有用的方法。对于 exec(cmdarray) 形式的调用而言,其行为与调用 exec(cmdarray, null, null) 完全相同。


参数:
cmdarray - 包含所调用命令及其参数的数组。
返回:
一个新的 Process 对象,用于管理子进程
抛出:
SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程
IOException - 如果发生 I/O 错误
NullPointerException - 如果 cmdarray 为 null,或者 cmdarray 的某个元素为 null
IndexOutOfBoundsException - 如果 cmdarray 是一个空数组(长度为 0)


public Process exec(String[] cmdarray,
                    String[] envp)
            throws IOException在指定环境的独立进程中执行指定命令和变量。
这是一个很有用的方法。对于 exec(cmdarray, envp) 形式的调用而言,其行为与调用 exec(cmdarray, envp, null) 完全相同。


参数:
cmdarray - 包含所调用命令及其参数的数组。
envp - 字符串数组,其中每个元素的环境变量的设置格式为 name=value;如果子进程应该继承当前进程的环境,或该参数为 null。
返回:
一个新的 Process 对象,用于管理子进程
抛出:
SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程
IOException - 如果发生 I/O 错误
NullPointerException - 如果 cmdarray 为 null,或者 cmdarray 的某个元素为 null,或者 envp 的某个元素为 null
IndexOutOfBoundsException - 如果 cmdarray 是一个空数组(长度为 0)


public Process exec(String[] cmdarray,
                    String[] envp,
                    File dir)
            throws IOException在指定环境和工作目录的独立进程中执行指定的命令和变量。
给定的字符串数组 cmdarray 表示一个命令行标记,字符串数组 envp 则表示“环境”变量设置,此方法会创建一个新进程,而指定的命令就在这个进程中执行。

此方法检查 cmdarray 是否是一条有效的操作系统命令。哪些命令有效取决于系统,但是该命令至少必须有一个非 null 字符串的非空列表。

如果 envp 为 null,那么子进程会继承当前进程的环境设置。

ProcessBuilder.start() 现在是启用一个具有已修改环境的进程的首选方法。

dir 指定了新子进程的工作目录。如果 dir 为 null,那么子进程会继承当前进程的当前工作目录。

如果安全管理器存在,则用数组 cmdarray 的第一个元素作为变量来调用安全管理器的 checkExec 方法。这可能导致抛出 SecurityException。

启动操作系统进程的方式完全取决于系统。其中有很多方面会导致错误:

未找到操作系统程序文件。
对程序文件的访问被拒绝。
工作目录不存在。
这些情况都会抛出一个异常。该异常的具体特性取决于系统,但它总是 IOException 的一个子类。


参数:
cmdarray - 包含所调用命令及其参数的数组。
envp - 字符串数组,其中每个元素的环境变量的设置格式为 name=value,如果子进程应该继承当前进程的环境,或该参数为 null。
dir - 子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为 null。
返回:
一个新的 Process 对象,用于管理子进程
抛出:
SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程
IOException - 如果发生 I/O 错误
NullPointerException - 如果 cmdarray 为 null,或者 cmdarray 的某个元素为 null,抑或 envp 的某个元素为 null
IndexOutOfBoundsException - 如果 cmdarray 是一个空数组(长度为 0)
分享到:
评论

相关推荐

    java执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec

    本文将详细介绍三种常用的方法:`Runtime.exec()`、`ProcessBuilder`以及`commons-exec`库。 #### 1. 使用`Runtime.exec()` `Runtime.exec()`是最为传统且简单的执行外部程序的方法。它可以启动一个新的进程,并...

    Java使用Runtime.exec()给Windows命令提示符做了个外壳,真的很山寨!

    通过查看和分析这个程序,你可以更深入地理解`Runtime.exec()`的工作原理和使用方法。 总结来说,虽然使用`Runtime.exec()`构建命令行外壳可能看起来不那么专业,但它提供了一种直观的方式来了解操作系统交互和进程...

    java.lang.Runtime.exec() Payload知识点详解

    在使用 java.lang.Runtime.exec() 方法时,命令参数中不能使用空格,否则将导致命令执行失败。这是因为 StringTokenizer 类将命令字符串按空格分隔,将参数解释为多个命令。这将导致命令执行失败,无法获取预期的...

    使用runtime实现linux命令行或shell脚本多次调用

    `Runtime.exec(String command)`方法用于执行单个命令,而如果需要执行包含多个命令的shell脚本,可以使用`Runtime.exec(String[] cmdArray)`,其中cmdArray是一个包含命令及其参数的字符串数组。 下面是一个简单的...

    Runtime 执行bat

    `Runtime`类提供了多个`exec()`方法来执行命令或命令行。例如,`exec(String command)`用于执行单个命令,而`exec(String[] cmdArray)`则接受命令及其参数的数组。在执行bat脚本时,我们通常使用后者,因为bat文件...

    java中如何调cmd命令

    本文将详细介绍如何利用Java的`Runtime.getRuntime().exec()`方法来实现对CMD命令的调用,并通过具体的例子来帮助读者理解和掌握这一技术。 #### 1. 基本原理 `java.lang.Runtime`类提供了运行时环境的表示,通过...

    android读取/显示logcat信息

    这通常涉及使用`Runtime.getRuntime().exec()`方法来执行shell命令。 4. **解析和显示日志**:将`adb logcat`的输出解析成日志条目,然后在界面上展示。每个条目包含时间戳、优先级、标签和消息。你可以创建一个...

    java调用本地浏览器的demo

    首先,`Runtime.getRuntime().exec()`方法是Java标准库中用于执行系统命令的常用方式。例如,如果你想在Windows环境下打开默认浏览器,你可以这样写: ```java String url = "http://www.example.com"; Runtime....

    Java调用Python的jar包

    首先,我们需要了解Java如何调用外部程序,这通常通过`java.lang.ProcessBuilder`类或`Runtime.getRuntime().exec()`方法来实现。这两个方法允许Java启动一个新的进程,并执行操作系统命令。因此,我们可以在Java中...

    java调用播放器

    ### Java调用播放器知识点详解 #### 一、概述 ...通过上述内容,我们可以了解到如何在Java中使用`Runtime.exec()`方法来调用播放器以及执行其他系统命令。这对于开发具有多媒体功能的应用程序非常有用。

    Java调用应用程序和Dos中的命令

    在Java中,`java.lang.Runtime`类提供了与当前运行时系统交互的方法,其中包括`exec()`方法,该方法允许我们启动一个新的进程并控制其输入和输出流。这对于需要与操作系统交互的任务非常有用。 #### 二、Runtime类...

    java调用windows命令

    - 使用`Runtime.getRuntime().exec()`方法创建一个子进程来执行指定的可执行程序。例如: ```java Process process = Runtime.getRuntime().exec(".\\p.exe"); ``` - `exec()`方法返回一个Process对象,可以...

    Android程序中(APK程序)执行Adb shell 命令

    Process process = Runtime.getRuntime().exec("su -c adb shell command"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = ...

    深入研究java.lang.Runtime类.doc

    一般不能实例化一个 Runtime 对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前 Runtime 运行时对象的引用。 一旦得到了一个当前的 Runtime 对象的引用,就可以调用 Runtime ...

    操作进程,显示与杀死

    在Java环境中,可以利用`Runtime.getRuntime().exec(commandStr)`方法执行上述命令。例如,`Runtime.getRuntime().exec("taskkill /im Notepad.exe")`将会结束所有记事本进程。如果需要强制结束,只需添加`/F`参数,...

    android系统中调用shell脚本

    1. **使用Runtime类**:这是最基础的方法,通过`Runtime.getRuntime().exec()`方法执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("sh /sdcard/myscript.sh"); ``` 但是这种方法只能...

    zt-exec:ZeroTurnaround流程执行器

    ZT流程执行器 持续集成 快速概述 创建该项目是为了将上项目的类似功能合并到单个代码库中。 它被设计为功能强大,但仍易于使用。... 有JRE选项,例如Runtime.exec()和ProcessBuilder 。 还有 。 尽管如此,我

    安卓模拟系统发送返回键值(KEYCODE_BACK)(csdn)————程序.pdf

    总结起来,这篇文章主要介绍了如何在Android应用中模拟发送返回键值(KEYCODE_BACK)的两种方法:使用`Instrumentation`和通过`Runtime.exec()`执行命令行操作。同时,也解释了相关权限`INJECT_EVENTS`的实际应用...

    安卓程序发送linux指令.zip

    如果你的应用需要在后台执行这类操作,但又不希望用户直接在设备上看到shell命令,可以使用`Runtime.getRuntime().exec()`方法将这些命令封装到你的应用内部。 总结来说,Android应用通过`Runtime.getRuntime()....

Global site tag (gtag.js) - Google Analytics