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>命令,表示要调用的外部程序文件及其参数(如果有)的字符串列表。 哪个字符串列表表示有效的操作系统命令依赖于系统。 例如,每个概念参数通常都是此列表中的元素,但有些操作系统的程序需要标记命令行字符串本身 - 在这样的系统上,Java 实现可能需要命令包含正好包含两个元素。

<li>a 环境,它是从 变量值的系统相关映射。 初始值是当前进程环境的副本, (请参阅 System#getenv()) 。

<li>a 工作目录。 默认值是当前进程的当前工作目录,通常是由系统属性 user.dir命名的目录。

<li>“redirect-input”>i standard input</i> 的<>源。 默认情况下,子进程从管道读取输入。 Java 代码可以通过 返回 Process#getOutputStream()的输出流访问此管道。 但是,可以使用 将标准输入重定向到另一个源 #redirectInput(Redirect) redirectInput。 在这种情况下, Process#getOutputStream() 将返回 一个 null 输出流,其中:

<ul><li>方法 OutputStream#write(int) write 始终引发 IOException<li>方法 OutputStream#close() close 不执行任何功能 </ul>

<li>“redirect-output”>i>standard output</i 和 <i>> standard error</i> 的目标<。 默认情况下,子进程将标准输出和标准错误写入管道。 Java 代码可以通过 和 Process#getErrorStream()返回Process#getInputStream()的输入流访问这些管道。 但是,可以使用 和 #redirectError(Redirect) redirectError将标准输出和标准错误重定向到其他目标#redirectOutput(Redirect) redirectOutput。 在这种情况下, Process#getInputStream() 和/或 Process#getErrorStream() 将返回 null 输入流,其中:

<ul>li 方法始终返回<-1 li>方法InputStream#available() available始终返回 0<li>方法InputStream#close() close不执行任何工作 </ul InputStream#read() read><>

<li>a redirectErrorStream 属性。 最初,此属性为 false,这意味着子进程的标准输出和错误输出将发送到两个单独的流,可以使用 和 Process#getErrorStream() 方法访问Process#getInputStream()它们。

如果值设置为 true,则:

<ul><li>标准错误与标准输出合并,并始终发送到同一目标 (这样可以更轻松地将错误消息与相应的输出关联) <li>标准错误的常见目标,并且可以使用 li>重定向标准输出,在<#redirectOutput(Redirect) redirectOutput创建子进程<>时忽略方法设置#redirectError(Redirect) redirectError的任何重定向 li 从Process#getErrorStream()返回的流将始终为 null 输入流</ul>

</ul>

修改进程生成器的属性将影响随后由该对象的 #start() 方法启动的进程,但永远不会影响以前启动的进程或 Java 进程本身。

大多数错误检查由 #start() 方法执行。 可以修改对象的状态,以便失败 #start() 。 例如,除非调用 ,否则 #start() 将命令属性设置为空列表不会引发异常。

<强>请注意,此类未同步。</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 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

构造函数

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)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 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)

扩展方法

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

适用于