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())。

<李>工作目錄。 預設值為目前程序的工作目錄,通常是由系統屬性 user.dir命名的目錄。

<Li>“Redirect-Input”>,一個 I<標準>輸入</i> 的來源。 預設情況下,子程序會讀取從管線讀取輸入。 Java 程式碼可透過 返回的輸出串流Process#getOutputStream()存取此管線。 然而,標準輸入可透過 #redirectInput(Redirect) redirectInput重新導向至其他來源。 此時, Process#getOutputStream() 會回傳 一個空輸出串流,對於:

<UL><LI >OutputStream#write(int) write方法總是丟IOException< Li>OutputStream#close() close 方法 什麼都沒<做 /ul>

<Li>「Redirect-output」>是 I<標準輸出>/I< 和 >I<標準錯誤>/i< 的目的地>。 預設情況下,子程序會將標準輸出和標準誤寫入管線。 Java 程式碼可透過 與 Process#getInputStream()返回Process#getErrorStream()的輸入串流存取這些管線。 然而,標準輸出與標準誤可透過 #redirectOutput(Redirect) redirectOutput#redirectError(Redirect) redirectError和 重新導向至其他目的地。 在這種情況下, Process#getInputStream() 和/或 Process#getErrorStream() 會回傳 一個空輸入串流,對於以下情況:

<ul><li>InputStream#read() read 方法總是回傳-1< Li>方法InputStream#available() available總是回傳0< Li>方法什麼InputStream#close() close都不<做 /ul>

<li>a redirectErrorStream 屬性。 最初,此性質為 false,意即子程序的標準輸出與錯誤輸出會被傳送到兩個獨立的串流,這些串流可透過 Process#getInputStream() and Process#getErrorStream() 方法存取。

若 值設為 true,則:

<UL>LI 標準誤會與標準輸出合併,且總是送往相同的目的地(這使錯誤訊息與對應的輸出更容易關聯)。<LI>標準誤差與標準輸出的共同目的地可以用 LI<重新導向>#redirectOutput(Redirect) redirectOutput。方法設定<的任何重定向在建立子程序>時都會被忽略,LI#redirectError(Redirect) redirectError回傳<的串流永遠是空輸入串流>/UL。Process#getErrorStream()<>

</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 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
ProcessBuilder(IList<String>)

用指定的作業系統程式和參數建構程序建構器。

ProcessBuilder(String[])

用指定的作業系統程式和參數建構程序建構器。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
JniPeerMembers

取得用於調用此 Java 節點成員的 JNI 元資料。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

(繼承來源 Object)
ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

(繼承來源 Object)

方法

名稱 Description
Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
Command()

回傳此程序建構者的作業系統程式與參數。

Command(IList<String>)

設定此程序建構者的作業系統程式與參數。

Command(String[])

回傳此程序建構者的作業系統程式與參數。

Construct(JniObjectReference, JniObjectReferenceOptions)

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
Directory()

回傳此程序建構者的工作目錄。

Directory(File)

設定此程序為建構者的工作目錄。

Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
Environment()

回傳此製程建構者環境的字串地圖視圖。

Equals(Object)

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
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)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
Start()

利用此程序建構器的屬性啟動一個新程序。

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

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

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

此類別用於建立作業系統程序。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

此類別用於建立作業系統程序。

(繼承來源 JavaObject)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

此類別用於建立作業系統程序。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於