Android中使用Java的 ProcessBuilder & Process

ProcessBuilder

1. ProcessBuilder 的用途?

  • 管理着一系列关于一个进程的属性,并且可以通过这些属性创建一个系统进程(Java Process的子进程)

2. 管理着哪些属性?

  • command, 指向着一系列可能会被执行的外部文件,和一系列取决于所处系统的操作系统命令
  • environment, 取决于所处系统的环境变量,起始值当前进程的环境变量拷贝
  • working directory, 默认值是该进程的工作目录。
  • standard input、standard output、standout error,指向该进程的各种流,可以通过Process类下的相应方法获得
  • redirectErrorStream, 用来指示该进程的standard output和error output是否输出到同一个地方

3. 注意

  • 由于该类没有使用同步锁,因此在多线程情况使用时需要手动在外部使用同步锁的操作

Process

1. Process 类是什么?

  • Process 本身是一个抽象类,就其本身来说代表着对一个进程的操作控制,同时拥有着关于这个进程的一些信息。
  • 由ProcessBuilder.start() 和 Runtime.exec() 创建一个Process的子类对象,通过该对象进行操作。

2. Process 类能够对进程进行哪些操作?

  • 获取进程的输入输出流
  • 查看进程的退出状态
  • 杀死进程
  • 等待进程执行的完成

用例

1. 执行一条Linux命令

  • 在Android中插入以下代码块
    ProcessBuilder pb = new ProcessBuilder(); try { Process process = pb.command("touch", "data/test.txt").start(); process.waitFor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); }
  • 通过adb, 切换到/data/目录下,会看到生成了一个文件名为test的txt文件,证明我们过Process执行命令的操作成功了.

你可能感兴趣的:(Android中使用Java的 ProcessBuilder & Process)