ProcessBuilder 类

定义

此类用于创建操作系统进程。

[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
属性

注解

此类用于创建操作系统进程。

每个 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

返回此 Object的运行时类。

(继承自 Object)
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)

设置此过程生成器 redirectErrorStream 的属性。

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)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

此类用于创建操作系统进程。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于