Share via


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 >環境,這是從 變數的系統相依對應。 初始值是目前進程環境的複本, (請參閱 System#getenv()) 。

<li > 工作 目錄。 預設值是目前進程的目前工作目錄,通常是系統屬性 user.dir 所命名的目錄。

<li > 「redirect-input」 > a source of < 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」 > a destination for < i > standard output < /i > and < i > standard error < /i > . 根據預設,子進程會將標準輸出和標準錯誤寫入管道。 JAVA 程式碼可以透過 和 Process#getErrorStream()Process#getInputStream() 回的輸入資料流程來存取這些管道。 不過,您可以使用 和 #redirectError(Redirect) redirectError ,將標準輸出和標準錯誤重新導向至其他目的地 #redirectOutput(Redirect) redirectOutput 。 在此情況下, Process#getInputStream() 和/或 Process#getErrorStream() 會傳回 Null 輸入資料流程,其中:

<ul >< li > 方法 InputStream#read() read 一律會傳回 <-1 li 方法 InputStream#available() available 一律會 0< 傳回 li >> 方法 InputStream#close() close ,方法不會 < 執行任何動作 /ul>

<li > a redirectErrorStream property. 一開始,這個屬性是 false ,這表示子進程的標準輸出和錯誤輸出會傳送至兩個不同的資料流程,您可以使用 和 Process#getErrorStream() 方法來存取 Process#getInputStream()

如果值設定為 true ,則:

<ul >< li > 標準錯誤會與標準輸出合併,且一律傳送至相同的目的地 (這可讓您更輕鬆地將錯誤訊息與對應的輸出相互關聯) < li > 標準錯誤的常見目的地,而且 #redirectOutput(Redirect) redirectOutput< 使用 方法 > 所設定 #redirectError(Redirect) redirectError 的任何重新導向,在建立 <> 從 傳回 Process#getErrorStream() 的資料流程時,會忽略 方法所設定的任何重新導向,一律會是 null 輸入資料流程 < /ul>

</ul>

修改進程產生器的屬性會影響該物件 #start() 方法後續啟動的進程,但永遠不會影響先前啟動的進程或 JAVA 進程本身。

大部分的錯誤檢查都是由 #start() 方法執行。 修改物件的 #start() 狀態可能會失敗。 例如,除非 #start() 叫用 ,否則將命令屬性設定為空清單將不會擲回例外狀況。

<strong > 請注意,此類別不會同步處理。 </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.ProcessBuilder JAVA 檔。

此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

建構函式

ProcessBuilder(IList<String>)

使用指定的作業系統程式和引數建構進程產生器。

ProcessBuilder(String[])

使用指定的作業系統程式和引數建構進程產生器。

屬性

Class

傳回這個 Object 的執行時間類別。

(繼承來源 Object)
Handle

基礎 Android 實例的控制碼。

(繼承來源 Object)
JniIdentityHashCode

這個類別是用來建立作業系統進程。

(繼承來源 Object)
JniPeerMembers

這個類別是用來建立作業系統進程。

PeerReference

這個類別是用來建立作業系統進程。

(繼承來源 Object)
ThresholdClass

此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。

(繼承來源 Object)
ThresholdType

此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。

(繼承來源 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 < notified/em > 或 < em > interrupted < /em > 。 ><

(繼承來源 Object)
Wait(Int64)

讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <>

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的執行緒等到喚醒為止,通常是 em < notified/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)

這個類別是用來建立作業系統進程。

適用於