ProcessBuilder 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
此类用于创建操作系统进程。
[Android.Runtime.Register("java/lang/ProcessBuilder", DoNotGenerateAcw=true)]
public sealed class ProcessBuilder : Java.Lang.Object
[<Android.Runtime.Register("java/lang/ProcessBuilder", DoNotGenerateAcw=true)>]
type ProcessBuilder = class
inherit Object
- 继承
- 属性
注解
此类用于创建操作系统进程。
每个 ProcessBuilder 实例管理进程属性的集合。 该方法 #start() 使用这些属性创建一个新 Process 实例。
#start()可以从同一实例重复调用该方法,以创建新的具有相同或相关属性的子进程。
每个进程生成器管理这些进程属性:
<ul>
<li>a command, a list of strings, which signing the external program file to be invoked and its arguments, if any. 哪些字符串列表表示有效的操作系统命令依赖于系统。 例如,每个概念参数都是此列表中的一个元素很常见,但有一些操作系统要求程序自行标记命令行字符串 -在此类系统上,Java实现可能需要命令仅包含两个元素。
<li>an environment, is a system-dependent mapping from variables to values. 初始值是当前进程环境的副本(请参阅 System#getenv())。
<li>a working directory. 默认值是当前进程的当前工作目录,通常是由系统属性 user.dir命名的目录。
<li>“redirect-input”>a source of <i>standard input</i>. 默认情况下,子进程从管道读取输入。 Java代码可以通过返回的Process#getOutputStream()输出流访问此管道。 但是,可以使用标准输入重定向到另一个源 #redirectInput(Redirect) redirectInput。 在这种情况下,将返回 null 输出流,为此: Process#getOutputStream()
<ul><li>方法 OutputStream#write(int) write 始终引发 IOException<li>方法 OutputStream#close() close 不 <执行任何 /ul>
<li>“redirect-output”>a destination for <i>standard output</i> and <i>standard error</i>. 默认情况下,子进程将标准输出和标准错误写入管道。 Java代码可以通过返回Process#getInputStream()的输入流访问这些管道。Process#getErrorStream() 但是,标准输出和标准错误可能会重定向到使用 #redirectOutput(Redirect) redirectOutput 和 #redirectError(Redirect) redirectError的其他目标。 在这种情况下, Process#getInputStream() 和/或 Process#getErrorStream() 将返回 null 输入流,为此:
<ul><li>方法InputStream#read() read始终返回 -1<li>方法InputStream#available() available始终返回 li>该方法InputStream#close() close不<执行0<任何 /ul>
<li>a redirectErrorStream 属性。 最初,此属性意味着false子进程的标准输出和错误输出将发送到两个单独的流,可以使用和Process#getErrorStream()方法访问Process#getInputStream()这些流。
如果该值设置为 true,则:
<ul><li>标准错误与标准输出合并,并且始终发送到同一目标(这使得更轻松地将错误消息与相应的输出相关联)<li>标准错误的常见目标,使用><#redirectOutput(Redirect) redirectOutput该方法设置#redirectError(Redirect) redirectError的任何重定向都可以重定向标准输出,在创建子进程 <li>时,返回的Process#getErrorStream()流始终为 null 输入流</ul>
</ul>
修改进程生成器的属性将影响该对象#start()方法随后启动的进程,但永远不会影响以前启动的进程或Java进程本身。
大多数错误检查由 #start() 该方法执行。 可以修改对象的状态,以便失败 #start() 。 例如,除非调用,否则 #start() 将命令属性设置为空列表不会引发异常。
<strong>Note that this class is not synchronized.</strong> 如果多个线程同时访问一个 ProcessBuilder 实例,并且至少有一个线程在结构上修改其中一个属性, 则必须 在外部同步它。
启动使用默认工作目录和环境的新过程非常简单:
{@code
Process p = new ProcessBuilder("myCommand", "myArg").start();
}
以下示例使用修改的工作目录和环境启动进程,并重定向要追加到日志文件的标准输出和错误:
{@code
ProcessBuilder pb =
new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
File log = new File("log");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
Process p = pb.start();
assert pb.redirectInput() == Redirect.PIPE;
assert pb.redirectOutput().file() == log;
assert p.getInputStream().read() == -1;
}
若要使用一组显式环境变量启动进程,请先调用 java.util.Map#clear() Map.clear() ,然后再添加环境变量。
在 1.5 中添加。
适用于 . 的 java.lang.ProcessBuilderJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
| 名称 | 说明 |
|---|---|
| ProcessBuilder(IList<String>) |
使用指定的操作系统程序和参数构造进程生成器。 |
| ProcessBuilder(String[]) |
使用指定的操作系统程序和参数构造进程生成器。 |
属性
| 名称 | 说明 |
|---|---|
| Class |
返回此 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| JniIdentityHashCode |
此类用于创建操作系统进程。 (继承自 Object) |
| JniPeerMembers |
此类用于创建操作系统进程。 |
| PeerReference |
此类用于创建操作系统进程。 (继承自 Object) |
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 (继承自 Object) |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 (继承自 Object) |
方法
| 名称 | 说明 |
|---|---|
| Clone() |
创建并返回此对象的副本。 (继承自 Object) |
| Command() |
返回此过程生成器的操作系统程序和参数。 |
| Command(IList<String>) |
设置此过程生成器的操作系统程序和参数。 |
| Command(String[]) |
返回此过程生成器的操作系统程序和参数。 |
| Directory() |
返回此过程生成器的工作目录。 |
| Directory(File) |
设置此过程生成器的工作目录。 |
| Dispose() |
此类用于创建操作系统进程。 (继承自 Object) |
| Dispose(Boolean) |
此类用于创建操作系统进程。 (继承自 Object) |
| Environment() |
返回此进程生成器环境的字符串映射视图。 |
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| InheritIO() |
将子进程标准 I/O 的源和目标设置为与当前Java进程的源和目标相同。 |
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| RedirectError() |
返回此过程生成器的标准错误目标。 |
| RedirectError(File) |
将此过程生成器的标准错误目标设置为文件。 |
| RedirectError(ProcessBuilder+Redirect) |
返回此过程生成器的标准错误目标。 |
| RedirectErrorStream() |
指示此进程生成器是否合并标准错误和标准输出。 |
| RedirectErrorStream(Boolean) |
设置此过程生成器 |
| RedirectInput() |
返回此过程生成器的标准输入源。 |
| RedirectInput(File) |
将此过程生成器的标准输入源设置为文件。 |
| RedirectInput(ProcessBuilder+Redirect) |
返回此过程生成器的标准输入源。 |
| RedirectOutput() |
返回此过程生成器的标准输出目标。 |
| RedirectOutput(File) |
将此过程生成器的标准输出目标设置为文件。 |
| RedirectOutput(ProcessBuilder+Redirect) |
返回此过程生成器的标准输出目标。 |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| Start() |
使用此进程生成器的属性启动一个新进程。 |
| ToArray<T>() |
此类用于创建操作系统进程。 (继承自 Object) |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| UnregisterFromRuntime() |
此类用于创建操作系统进程。 (继承自 Object) |
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><> (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
此类用于创建操作系统进程。 (继承自 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
此类用于创建操作系统进程。 (继承自 Object) |
| IJavaPeerable.Finalized() |
此类用于创建操作系统进程。 (继承自 Object) |
| IJavaPeerable.JniManagedPeerState |
此类用于创建操作系统进程。 (继承自 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
此类用于创建操作系统进程。 (继承自 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
此类用于创建操作系统进程。 (继承自 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
此类用于创建操作系统进程。 (继承自 Object) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
此类用于创建操作系统进程。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |