Java的ProcessBuilder是一個final類。
public final class ProcessBuilderextends Object此類用於建立作業系統進程。
每個 ProcessBuilder 執行個體管理一個進程屬性集。start() 方法利用這些屬性建立一個新的 Process 執行個體。start() 方法可以從同一執行個體重複調用,以利用相同的或相關的屬性建立新的子進程
java.lang
類 Process
java.lang.Object
java.lang.Process
--------------------------------------------------------------------------------
public abstract class Processextends ObjectProcessBuilder.start() 和 Runtime.exec 方法建立一個本機進程,並返回 Process 子類的一個執行個體,該執行個體可用來控制進程並獲得相關資訊。Process 類提供了執行從進程輸入、執行輸出到進程、等待進程完成、檢查進程的退出狀態以及銷毀(殺掉)進程的方法。
建立進程的方法可能無法針對某些本機平台上的特定進程很好地工作,比如,本機視窗進程,守護進程,Microsoft Windows 上的 Win16/DOS 進程,或者 shell 指令碼。建立的子進程沒有自己的終端或控制台。它的所有標準 io(即 stdin、stdout 和 stderr)操作都將通過三個流 (getOutputStream()、getInputStream() 和 getErrorStream()) 重新導向到父進程。父進程使用這些流來提供到子進程的輸入和獲得從子進程的輸出。因為有些本機平台僅針對標準輸入和輸出資料流提供有限的緩衝區大小,如果讀寫子進程的輸出資料流或輸入資料流迅速出現失敗,則可能導致子進程阻塞,甚至產生死結。
當沒有 Process 對象的更多引用時,不是刪掉子進程,而是繼續非同步執行子進程。
對於帶有 Process 對象的 Java 進程,沒有必要非同步或並發執行由 Process 對象表示的進程。
具體使用樣本:
public class ProcessTest {
public static void main(String[] args)
{
try{
ProcessBuilder pb = new ProcessBuilder("notepad.exe");
pb.redirectErrorStream(true);
Process p = pb.start();
}catch (Exception e)
{
System.out.print(e.toString());
}
}
}