Java.lang.Runtime.exec() 方法

描述

java.lang.Runtime.exec(String command, String[] envp, File dir) 方法在具有指定环境和工作目录的单独进程中执行指定的字符串命令。 这是一种方便的方法。 exec(command, envp, dir) 形式的调用与 exec(cmdarray, envp, dir) 调用的行为方式完全相同,其中 cmdarray 是命令中所有标记的数组。

更准确地说,命令字符串使用由调用 new StringTokenizer(command) 创建的 StringTokenizer 分解为标记,而无需进一步修改字符类别。 标记器生成的标记然后以相同的顺序放置在新的字符串数组 cmdarray 中。


声明

以下是 java.lang.Runtime.exec() 方法的声明。

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

参数

  • command − 指定的系统命令。

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

  • dir − 子进程的工作目录,如果子进程应该继承当前进程的工作目录,则返回 null。


返回值

该方法返回一个新的Process对象,用于管理子进程


异常

  • SecurityException − 如果存在安全管理器并且其 checkExec 方法不允许创建子进程

  • IOException − 如果发生 I/O 错误

  • NullPointerException − 如果 command 为 null,或者 envp 的元素之一为 null

  • IllegalArgumentException − 如果命令为空


示例

下面的例子展示了 lang.Runtime.exec() 方法的使用。

package com.tutorialspoint;

import java.io.File;

public class RuntimeDemo {

   public static void main(String[] args) {
      try {

      // print a message
      System.out.println("Executing notepad.exe...");

      // create a file with the working directory we wish
      File dir = new File("C:/");

      // create a process and execute notepad.exe and currect environment
      Process process = Runtime.getRuntime().exec("notepad.exe", null, dir);

      // print another message
      System.out.println("Notepad should now open.");

      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

让我们编译并运行上面的程序,这将产生下面的结果 −

Executing notepad.exe...
Notepad should now open.