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执行命令的操作成功了.