日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS ProcessBuilder

ProcessBuilder

巴里坤哈薩克網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

java.lang.Object

|---java.lang.ProcessBuilder

public final class ProcessBuilder
extends Object

此類用于創(chuàng)建操作系統(tǒng)進(jìn)程。

每個(gè) ProcessBuilder 實(shí)例管理一個(gè)流程屬性的集合。 start() 方法使用這些屬性創(chuàng)建一個(gè)新的 Process 實(shí)例。 可以從同一個(gè)實(shí)例重復(fù)調(diào)用 start() 方法來創(chuàng)建具有相同或相關(guān)屬性的新子流程。

每個(gè)流程構(gòu)建器都管理這些流程屬性:

  • 一個(gè)命令,一個(gè)字符串列表,表示要調(diào)用的外部程序文件及其參數(shù)(如果有)。 哪些字符串列表代表有效的操作系統(tǒng)命令取決于系統(tǒng)。 例如,每個(gè)概念參數(shù)通常是該列表中的一個(gè)元素,但在某些操作系統(tǒng)中,程序需要自己標(biāo)記命令行字符串——在這樣的系統(tǒng)上,Java 實(shí)現(xiàn)可能需要命令恰好包含兩個(gè)元素。
  • 環(huán)境,它是從變量到值的系統(tǒng)相關(guān)映射。 初始值是當(dāng)前進(jìn)程環(huán)境的副本。
  • 一個(gè)工作目錄。 默認(rèn)值為當(dāng)前進(jìn)程的當(dāng)前工作目錄,通常是系統(tǒng)屬性user.dir命名的目錄。
  • 標(biāo)準(zhǔn)輸入源 默認(rèn)情況下,子進(jìn)程從管道讀取輸入。 Java 代碼可以通過 Process#getOutputStream() 返回的輸出流訪問此管道。 但是,標(biāo)準(zhǔn)輸入可以使用redirectInput 重定向到另一個(gè)源。 在這種情況下,Process#getOutputStream() 將返回一個(gè)空輸出流,其中:
  • OutputStream#write(int) 方法總是拋出 IOException
  • OutputStream#close() 方法什么也不做
  • 標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤的目的地。 默認(rèn)情況下,子進(jìn)程將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤寫入管道。 Java 代碼可以通過 Process#getInputStream() 和 Process#getErrorStream() 返回的輸入流訪問這些管道。 但是,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤可以使用redirectOutput 和redirectError 重定向到其他目的地。 在這種情況下, Process#getInputStream() 和/或 Process#getErrorStream() 將返回一個(gè)空輸入流,其中:
  • InputStream#read() 方法總是返回 -1
  • InputStream#available() 方法總是返回 0
  • InputStream#close() 方法什么也不做
  • 一個(gè) redirectErrorStream 屬性。 最初,此屬性為 false,這意味著子進(jìn)程的標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出被發(fā)送到兩個(gè)單獨(dú)的流,可以使用 Process#getInputStream() 和 Process#getErrorStream() 方法訪問它們。

如果該值設(shè)置為 true,則:

  • 標(biāo)準(zhǔn)錯(cuò)誤與標(biāo)準(zhǔn)輸出合并并始終發(fā)送到相同的目的地(這使得將錯(cuò)誤消息與相應(yīng)的輸出關(guān)聯(lián)起來更容易)
  • 標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出的共同目的地可以使用redirectOutput重定向
  • 在創(chuàng)建子進(jìn)程時(shí),任何由 redirectError 方法設(shè)置的重定向都會(huì)被忽略
  • 從 Process#getErrorStream() 返回的流將始終為空輸入流

修改進(jìn)程構(gòu)建器的屬性將影響隨后由該對象的 start() 方法啟動(dòng)的進(jìn)程,但不會(huì)影響先前啟動(dòng)的進(jìn)程或 Java 進(jìn)程本身。

大多數(shù)錯(cuò)誤檢查由 start() 方法執(zhí)行。 可以修改對象的狀態(tài)以使 start() 失敗。 例如,將 command 屬性設(shè)置為空列表不會(huì)引發(fā)異常,除非調(diào)用 start()。

請注意,此類不同步。 如果多個(gè)線程同時(shí)訪問一個(gè) ProcessBuilder 實(shí)例,并且至少有一個(gè)線程在結(jié)構(gòu)上修改了其中一個(gè)屬性,則必須在外部進(jìn)行同步。

啟動(dòng)一個(gè)使用默認(rèn)工作目錄和環(huán)境的新進(jìn)程很容易:

  Process p = new ProcessBuilder("myCommand", "myArg").start();

下面是一個(gè)示例,它使用修改后的工作目錄和環(huán)境啟動(dòng)進(jìn)程,并將標(biāo)準(zhǔn)輸出和錯(cuò)誤重定向到附加到日志文件中:

 ProcessBuilder pb =
   new ProcessBuilder("myCommand", "myArg1", "myArg2");
 Map 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;

要使用一組顯式環(huán)境變量啟動(dòng)進(jìn)程,請?jiān)谔砑迎h(huán)境變量之前首先調(diào)用 Map.clear()。

嵌套類摘要

修飾符和類型描述
static classProcessBuilder.Redirect表示子流程輸入的來源或子流程輸出的目的地。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù)描述
ProcessBuilder(String... command)使用指定的操作系統(tǒng)程序和參數(shù)構(gòu)造一個(gè)進(jìn)程構(gòu)建器。
ProcessBuilder(ListString command)使用指定的操作系統(tǒng)程序和參數(shù)構(gòu)造一個(gè)進(jìn)程構(gòu)建器。

方法總結(jié)

修飾符和類型方法描述
ListStringcommand()返回此進(jìn)程構(gòu)建器的操作系統(tǒng)程序和參數(shù)。
ProcessBuildercommand(String... command)設(shè)置此進(jìn)程構(gòu)建器的操作系統(tǒng)程序和參數(shù)。
ProcessBuildercommand(ListString command)設(shè)置此進(jìn)程構(gòu)建器的操作系統(tǒng)程序和參數(shù)。
Filedirectory()返回此流程構(gòu)建器的工作目錄。
ProcessBuilderdirectory(File directory)設(shè)置此流程構(gòu)建器的工作目錄。
MapString,Stringenvironment()返回此流程構(gòu)建器環(huán)境的字符串映射視圖。
ProcessBuilderinheritIO()將子進(jìn)程標(biāo)準(zhǔn) I/O 的源和目標(biāo)設(shè)置為與當(dāng)前 Java 進(jìn)程的相同。
ProcessBuilder.RedirectredirectError()返回此流程構(gòu)建器的標(biāo)準(zhǔn)錯(cuò)誤目標(biāo)。
ProcessBuilderredirectError(File file)將此流程構(gòu)建器的標(biāo)準(zhǔn)錯(cuò)誤目標(biāo)設(shè)置為文件。
ProcessBuilderredirectError(ProcessBuilder.Redirect destination)設(shè)置此流程構(gòu)建器的標(biāo)準(zhǔn)錯(cuò)誤目標(biāo)。
booleanredirectErrorStream()告知此流程構(gòu)建器是否合并標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出。
ProcessBuilderredirectErrorStream(boolean redirectErrorStream)設(shè)置此流程構(gòu)建器的 redirectErrorStream 屬性。
ProcessBuilder.RedirectredirectInput()返回此流程構(gòu)建器的標(biāo)準(zhǔn)輸入源。
ProcessBuilderredirectInput(File file)將此流程構(gòu)建器的標(biāo)準(zhǔn)輸入源設(shè)置為文件。
ProcessBuilderredirectInput(ProcessBuilder.Redirect source)設(shè)置此流程構(gòu)建器的標(biāo)準(zhǔn)輸入源。
ProcessBuilder.RedirectredirectOutput()返回此流程構(gòu)建器的標(biāo)準(zhǔn)輸出目標(biāo)。
ProcessBuilderredirectOutput(File file)將此流程構(gòu)建器的標(biāo)準(zhǔn)輸出目標(biāo)設(shè)置為文件。
ProcessBuilderredirectOutput(ProcessBuilder.Redirect destination)設(shè)置此流程構(gòu)建器的標(biāo)準(zhǔn)輸出目標(biāo)。
Processstart()使用此流程構(gòu)建器的屬性啟動(dòng)一個(gè)新流程。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

ProcessBuilder

public ProcessBuilder(ListString command)

使用指定的操作系統(tǒng)程序和參數(shù)構(gòu)造一個(gè)進(jìn)程構(gòu)建器。 此構(gòu)造函數(shù)不會(huì)復(fù)制命令列表。 列表的后續(xù)更新將反映在流程構(gòu)建器的狀態(tài)中。 不檢查命令是否對應(yīng)于有效的操作系統(tǒng)命令。

參數(shù):

參數(shù)名稱參數(shù)描述
command包含程序及其參數(shù)的列表

Throws:

Throw名稱Throw描述
NullPointerException如果參數(shù)為空

ProcessBuilder

public ProcessBuilder(String... command)

使用指定的操作系統(tǒng)程序和參數(shù)構(gòu)造一個(gè)進(jìn)程構(gòu)建器。 這是一個(gè)方便的構(gòu)造函數(shù),它將進(jìn)程構(gòu)建器的命令設(shè)置為一個(gè)字符串列表,其中包含與命令數(shù)組相同的字符串,順序相同。 不檢查命令是否對應(yīng)于有效的操作系統(tǒng)命令。

參數(shù):

參數(shù)名稱參數(shù)描述
command包含程序及其參數(shù)的字符串?dāng)?shù)組

方法詳情

command

public ProcessBuilder command(ListString command)

設(shè)置此進(jìn)程構(gòu)建器的操作系統(tǒng)程序和參數(shù)。 此方法不會(huì)復(fù)制命令列表。 列表的后續(xù)更新將反映在流程構(gòu)建器的狀態(tài)中。 不檢查命令是否對應(yīng)于有效的操作系統(tǒng)命令。

參數(shù):

參數(shù)名稱參數(shù)描述
command包含程序及其參數(shù)的列表

返回:

此流程構(gòu)建器

Throws:

Throw名稱Throw描述
NullPointerException如果參數(shù)為空

command

public ProcessBuilder command(String... command)

設(shè)置此進(jìn)程構(gòu)建器的操作系統(tǒng)程序和參數(shù)。 這是一種方便的方法,它將命令設(shè)置為一個(gè)字符串列表,其中包含與命令數(shù)組相同的字符串,順序相同。 不檢查命令是否對應(yīng)于有效的操作系統(tǒng)命令。

參數(shù):

參數(shù)名稱參數(shù)描述
command包含程序及其參數(shù)的字符串?dāng)?shù)組

返回:

此流程構(gòu)建器

command

public ListString command()

返回此進(jìn)程構(gòu)建器的操作系統(tǒng)程序和參數(shù)。 返回的列表不是副本。 列表的后續(xù)更新將反映在此流程構(gòu)建器的狀態(tài)中。

返回:

此流程構(gòu)建器的程序及其參數(shù)

environment

public MapString,String environment()

返回此流程構(gòu)建器環(huán)境的字符串映射視圖。每當(dāng)創(chuàng)建流程構(gòu)建器時(shí),都會(huì)將環(huán)境初始化為當(dāng)前流程環(huán)境的副本(請參閱 System#getenv())。隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程將使用該映射作為它們的環(huán)境。

返回的對象可以使用普通的 Map 操作進(jìn)行修改。這些修改將對通過 start() 方法啟動(dòng)的子進(jìn)程可見。兩個(gè) ProcessBuilder 實(shí)例始終包含獨(dú)立的流程環(huán)境,因此對返回映射的更改將永遠(yuǎn)不會(huì)反映在任何其他 ProcessBuilder 實(shí)例或 System#getenv 返回的值中。

如果系統(tǒng)不支持環(huán)境變量,則返回一個(gè)空映射。

返回的映射不允許空鍵或值。嘗試插入或查詢是否存在空鍵或值將引發(fā) NullPointerException。嘗試查詢是否存在非 String 類型的鍵或值將引發(fā) ClassCastException。

返回地圖的行為取決于系統(tǒng)。系統(tǒng)可能不允許修改環(huán)境變量或可能禁止某些變量名稱或值。因此,如果操作系統(tǒng)不允許修改,嘗試修改映射可能會(huì)失敗并出現(xiàn) UnsupportedOperationException 或 IllegalArgumentException。

由于環(huán)境變量名稱和值的外部格式取決于系統(tǒng),因此它們與 Java 的 Unicode 字符串之間可能沒有一對一的映射。盡管如此,映射的實(shí)現(xiàn)方式是,未由 Java 代碼修改的環(huán)境變量將在子進(jìn)程中具有未修改的本機(jī)表示。

返回的地圖及其集合視圖可能不遵守 Object#equals 和 Object#hashCode 方法的一般約定。

返回的地圖通常在所有平臺(tái)上都區(qū)分大小寫。

如果存在安全管理器,則使用 RuntimePermission("getenv.*") 權(quán)限調(diào)用其 SecurityManager#checkPermission 方法。這可能會(huì)導(dǎo)致拋出 SecurityException。

將信息傳遞給 Java 子進(jìn)程時(shí),系統(tǒng)屬性通常優(yōu)于環(huán)境變量。

返回:

此流程構(gòu)建器的環(huán)境

Throws:

Throw名稱Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager#checkPermission 方法不允許訪問進(jìn)程環(huán)境

directory

public File directory()

返回此流程構(gòu)建器的工作目錄。 隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程將使用它作為其工作目錄。 返回值可能為null——表示使用當(dāng)前Java進(jìn)程的工作目錄,通常是系統(tǒng)屬性user.dir命名的目錄,作為子進(jìn)程的工作目錄。

返回:

此流程構(gòu)建器的工作目錄

directory

public ProcessBuilder directory(File directory)

設(shè)置此流程構(gòu)建器的工作目錄。 隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程將使用它作為其工作目錄。 參數(shù)可以為null——表示使用當(dāng)前Java進(jìn)程的工作目錄,通常是系統(tǒng)屬性user.dir命名的目錄,作為子進(jìn)程的工作目錄。

參數(shù):

參數(shù)名稱參數(shù)描述
directory新的工作目錄

返回:

此流程構(gòu)建器

redirectInput

public ProcessBuilder redirectInput(ProcessBuilder.Redirect source)

設(shè)置此流程構(gòu)建器的標(biāo)準(zhǔn)輸入源。 隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程從此源獲取其標(biāo)準(zhǔn)輸入。

如果源是 Redirect#PIPE(初始值),則可以使用 Process#getOutputStream() 返回的輸出流寫入子進(jìn)程的標(biāo)準(zhǔn)輸入。 如果源設(shè)置為任何其他值,則 Process#getOutputStream() 將返回一個(gè)空輸出流。

參數(shù):

參數(shù)名稱參數(shù)描述
source新的標(biāo)準(zhǔn)輸入源

返回:

此流程構(gòu)建器

Throws:

Throw名稱Throw描述
IllegalArgumentException如果重定向不對應(yīng)于有效的數(shù)據(jù)源,即類型為 WRITE 或 APPEND

redirectOutput

public ProcessBuilder redirectOutput(ProcessBuilder.Redirect destination)

設(shè)置此流程構(gòu)建器的標(biāo)準(zhǔn)輸出目標(biāo)。 隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程將其標(biāo)準(zhǔn)輸出發(fā)送到該目的地。

如果目標(biāo)是 Redirect#PIPE(初始值),則可以使用 Process#getInputStream() 返回的輸入流讀取子進(jìn)程的標(biāo)準(zhǔn)輸出。 如果目標(biāo)設(shè)置為任何其他值,則 Process#getInputStream() 將返回一個(gè)空輸入流。

參數(shù):

參數(shù)名稱參數(shù)描述
destination新的標(biāo)準(zhǔn)輸出目的地

返回:

此流程構(gòu)建器

Throws:

Throw名稱Throw描述
IllegalArgumentException如果重定向不對應(yīng)于數(shù)據(jù)的有效目的地,即類型為 READ

redirectError

public ProcessBuilder redirectError(ProcessBuilder.Redirect destination)

設(shè)置此流程構(gòu)建器的標(biāo)準(zhǔn)錯(cuò)誤目標(biāo)。 隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程將其標(biāo)準(zhǔn)錯(cuò)誤發(fā)送到該目的地。

如果目標(biāo)是 Redirect#PIPE(初始值),則可以使用 Process#getErrorStream() 返回的輸入流讀取子進(jìn)程的錯(cuò)誤輸出。 如果目標(biāo)設(shè)置為任何其他值,則 Process#getErrorStream() 將返回空輸入流。

如果redirectErrorStream 屬性已設(shè)置為true,則此方法設(shè)置的重定向無效。

參數(shù):

參數(shù)名稱參數(shù)描述
destination新的標(biāo)準(zhǔn)錯(cuò)誤目的地

返回:

此流程構(gòu)建器

Throws:

Throw名稱Throw描述
IllegalArgumentException如果重定向不對應(yīng)于數(shù)據(jù)的有效目的地,即類型為 READ

redirectInput

public ProcessBuilder redirectInput(File file)

將此流程構(gòu)建器的標(biāo)準(zhǔn)輸入源設(shè)置為文件。

這是一種方便的方法。 形式redirectInput(file) 的調(diào)用與調(diào)用redirectInput (Redirect.from(file)) 的行為方式完全相同。

參數(shù):

參數(shù)名稱參數(shù)描述
file新的標(biāo)準(zhǔn)輸入源

返回:

此流程構(gòu)建器

redirectOutput

public ProcessBuilder redirectOutput(File file)

將此流程構(gòu)建器的標(biāo)準(zhǔn)輸出目標(biāo)設(shè)置為文件。

這是一種方便的方法。 形式redirectOutput(file) 的調(diào)用與調(diào)用redirectOutput (Redirect.to(file)) 的行為方式完全相同。

參數(shù):

參數(shù)名稱參數(shù)描述
file新的標(biāo)準(zhǔn)輸出目的地

返回:

此流程構(gòu)建器

redirectError

public ProcessBuilder redirectError(File file)

將此流程構(gòu)建器的標(biāo)準(zhǔn)錯(cuò)誤目標(biāo)設(shè)置為文件。

這是一種方便的方法。 調(diào)用redirectError(file) 形式的行為與調(diào)用redirectError (Redirect.to(file)) 完全相同。

參數(shù):

參數(shù)名稱參數(shù)描述
file新的標(biāo)準(zhǔn)錯(cuò)誤目的地

返回:

此流程構(gòu)建器

redirectInput

public ProcessBuilder.Redirect redirectInput()

返回此流程構(gòu)建器的標(biāo)準(zhǔn)輸入源。 隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程從此源獲取其標(biāo)準(zhǔn)輸入。 初始值為重定向#PIPE。

返回:

此流程構(gòu)建器的標(biāo)準(zhǔn)輸入源

redirectOutput

public ProcessBuilder.Redirect redirectOutput()

返回此流程構(gòu)建器的標(biāo)準(zhǔn)輸出目標(biāo)。 隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程將其標(biāo)準(zhǔn)輸出重定向到該目的地。 初始值為重定向#PIPE。

返回:

此流程構(gòu)建器的標(biāo)準(zhǔn)輸出目的地

redirectError

public ProcessBuilder.Redirect redirectError()

返回此流程構(gòu)建器的標(biāo)準(zhǔn)錯(cuò)誤目標(biāo)。 隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程將其標(biāo)準(zhǔn)錯(cuò)誤重定向到該目的地。 初始值為重定向#PIPE。

返回:

此流程構(gòu)建器的標(biāo)準(zhǔn)錯(cuò)誤目的地

inheritIO

public ProcessBuilder inheritIO()

將子進(jìn)程標(biāo)準(zhǔn) I/O 的源和目標(biāo)設(shè)置為與當(dāng)前 Java 進(jìn)程的相同。

這是一種方便的方法。 表單的調(diào)用

  pb.inheritIO()

行為方式與調(diào)用完全相同

  pb.redirectInput(Redirect.INHERIT)   .redirectOutput(Redirect.INHERIT)   .redirectError(Redirect.INHERIT)

這提供了相當(dāng)于大多數(shù)操作系統(tǒng)命令解釋器或標(biāo)準(zhǔn) C 庫函數(shù) system() 的行為。

返回:

此流程構(gòu)建器

redirectErrorStream

public boolean redirectErrorStream()

告知此流程構(gòu)建器是否合并標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出。

如果此屬性為true,則隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程生成的任何錯(cuò)誤輸出都將與標(biāo)準(zhǔn)輸出合并,以便可以使用 Process#getInputStream() 方法讀取兩者。 這使得更容易將錯(cuò)誤消息與相應(yīng)的輸出相關(guān)聯(lián)。 初始值為false。

返回:

此流程構(gòu)建器的 redirectErrorStream 屬性

redirectErrorStream

public ProcessBuilder redirectErrorStream(boolean redirectErrorStream)

設(shè)置此流程構(gòu)建器的 redirectErrorStream 屬性。

如果此屬性為true,則隨后由該對象的 start() 方法啟動(dòng)的子進(jìn)程生成的任何錯(cuò)誤輸出都將與標(biāo)準(zhǔn)輸出合并,以便可以使用 Process#getInputStream() 方法讀取兩者。 這使得更容易將錯(cuò)誤消息與相應(yīng)的輸出相關(guān)聯(lián)。 初始值為false。

參數(shù):

參數(shù)名稱參數(shù)描述
redirectErrorStream新的屬性值

返回:

此流程構(gòu)建器

start

public Process start() throws IOException

使用此流程構(gòu)建器的屬性啟動(dòng)一個(gè)新流程。

新進(jìn)程將在由 directory() 給出的工作目錄中調(diào)用由 command() 給出的命令和參數(shù),以及由 environment() 給出的進(jìn)程環(huán)境。

此方法檢查該命令是否為有效的操作系統(tǒng)命令。哪些命令有效取決于系統(tǒng),但至少該命令必須是非空字符串的非空列表。

在某些操作系統(tǒng)上啟動(dòng)進(jìn)程可能需要一組最小的系統(tǒng)相關(guān)環(huán)境變量。因此,子流程可能會(huì)繼承流程構(gòu)建器的 environment() 之外的其他環(huán)境變量設(shè)置。

如果存在安全管理器,則調(diào)用其 SecurityManager#checkExec 方法,并使用此對象的命令數(shù)組的第一個(gè)組件作為其參數(shù)。這可能會(huì)導(dǎo)致拋出 SecurityException。

啟動(dòng)操作系統(tǒng)進(jìn)程高度依賴于系統(tǒng)??赡艹鲥e(cuò)的許多事情包括:

  • 未找到操作系統(tǒng)程序文件。
  • 訪問程序文件被拒絕。
  • 工作目錄不存在。

在這種情況下會(huì)拋出異常。 異常的確切性質(zhì)取決于系統(tǒng),但它始終是 IOException 的子類。

對此流程構(gòu)建器的后續(xù)修改不會(huì)影響返回的流程。

返回:

用于管理子流程的新流程對象

Throws:

Throw名稱Throw描述
NullPointerException如果命令列表的元素為空
IndexOutOfBoundsException如果命令是一個(gè)空列表(大小為 0)
SecurityException如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進(jìn)程,或者子進(jìn)程的標(biāo)準(zhǔn)輸入從文件重定向并且安全管理器的 SecurityManager#checkRead 方法拒絕讀取文件,或者標(biāo)準(zhǔn)輸出或標(biāo)準(zhǔn) 子進(jìn)程的錯(cuò)誤被重定向到文件并且安全管理器的 SecurityManager#checkWrite 方法拒絕對文件的寫訪問
IOException如果發(fā)生 I/O 錯(cuò)誤

新聞名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS ProcessBuilder
轉(zhuǎn)載來源:http://www.5511xx.com/article/dhjdsoo.html