鴻蒙OS Process

2022-05-18 16:26 更新

Process

java.lang.Object

|---java.lang.Process

public abstract class Process
extends Object

ProcessBuilder#start() 和 Runtime#exec(String[],String[],File) 方法創(chuàng)建本機進程并返回 Process 子類的實例,該實例可用于控制進程并獲取有關(guān)它的信息。 Process 類提供了執(zhí)行來自進程的輸入、執(zhí)行輸出到進程、等待進程完成、檢查進程的退出狀態(tài)以及銷毀(殺死)進程的方法。

創(chuàng)建進程的方法可能不適用于某些本機平臺上的特殊進程,例如本機窗口進程、守護進程、Microsoft Windows 上的 Win16/DOS 進程或 shell 腳本。

默認情況下,創(chuàng)建的子進程沒有自己的終端或控制臺。它的所有標準 I/O(即 stdin、stdout、stderr)操作都將被重定向到父進程,在那里可以通過使用 getOutputStream()、getInputStream() 和 getErrorStream() 方法獲得的流來訪問它們。父進程使用這些流向子進程提供輸入并從子進程獲取輸出。由于部分原生平臺只為標準輸入輸出流提供有限的緩沖區(qū)大小,未能及時寫入子進程的輸入流或讀取輸出流可能會導致子進程阻塞,甚至死鎖。

如果需要,也可以使用 ProcessBuilder 類的方法重定向子進程 I/O。

當沒有更多對 Process 對象的引用時,子進程不會被終止,而是子進程繼續(xù)異步執(zhí)行。

不要求由 Process 對象表示的進程相對于擁有該 Process 對象的 Java 進程異步或并發(fā)執(zhí)行。

從 1.5 開始,ProcessBuilder#start() 是創(chuàng)建流程的首選方式。

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

構(gòu)造函數(shù) 描述
Process()

方法總結(jié)

修飾符和類型 方法 描述
abstract void destroy() 殺死子進程。
Process destroyForcibly() 殺死子進程。
abstract int exitValue() 返回子進程的退出值。
abstract InputStream getErrorStream() 返回連接到子進程錯誤輸出的輸入流。
abstract InputStream getInputStream() 返回連接到子進程正常輸出的輸入流。
abstract OutputStream getOutputStream() 返回連接到子進程正常輸入的輸出流。
boolean isAlive() 測試這個 Process 所代表的子進程是否存活。
abstract int waitFor() 如有必要,使當前線程等待,直到此 Process 對象表示的進程終止。
boolean waitFor(long timeout, TimeUnit unit) 如有必要,使當前線程等待,直到此 Process 對象表示的子進程終止,或指定的等待時間過去。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

Process

public Process()

方法詳情

getOutputStream

public abstract OutputStream getOutputStream()

返回連接到子進程正常輸入的輸出流。 流的輸出通過管道傳輸?shù)酱?Process 對象表示的進程的標準輸入中。

如果子流程的標準輸入已使用 ProcessBuilder#redirectInput(Redirect) 重定向,則此方法將返回空輸出流。

實施說明:對返回的輸出流進行緩沖是個好主意。

返回:

連接到子進程正常輸入的輸出流

getInputStream

public abstract InputStream getInputStream()

返回連接到子進程正常輸出的輸入流。 流從由該 Process 對象表示的進程的標準輸出中獲取通過管道傳輸?shù)臄?shù)據(jù)。

如果子流程的標準輸出已使用 ProcessBuilder#redirectOutput(Redirect) 重定向,則此方法將返回空輸入流。

否則,如果子進程的標準錯誤已經(jīng)使用 ProcessBuilder#redirectErrorStream(boolean) 重定向,則該方法返回的輸入流將接收合并后的標準輸出和子進程的標準錯誤。

實現(xiàn)說明:對返回的輸入流進行緩沖是個好主意。

返回:

連接到子進程正常輸出的輸入流

getErrorStream

public abstract InputStream getErrorStream()

返回連接到子進程錯誤輸出的輸入流。 流從這個 Process 對象表示的進程的錯誤輸出中獲取數(shù)據(jù)。

如果子進程的標準錯誤已使用 ProcessBuilder#redirectError(Redirect) 或 ProcessBuilder#redirectErrorStream(boolean) 重定向,則此方法將返回 null 輸入流。

實現(xiàn)說明:對返回的輸入流進行緩沖是個好主意。

返回:

連接到子進程錯誤輸出的輸入流

waitFor

public abstract int waitFor() throws InterruptedException

如有必要,使當前線程等待,直到此 Process 對象表示的進程終止。 如果子進程已經(jīng)終止,則此方法立即返回。 如果子進程尚未終止,則調(diào)用線程將被阻塞,直到子進程退出。

返回:

此 Process 對象表示的子進程的退出值。 按照慣例,值為 0 表示正常終止。

Throws:

Throw名稱 Throw描述
InterruptedException 如果當前線程在等待時被另一個線程 Thread#interrupt(),則等待結(jié)束并拋出 InterruptedException。

waitFor

public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException

如有必要,使當前線程等待,直到此 Process 對象表示的子進程終止,或指定的等待時間過去。

如果子進程已經(jīng)終止,則此方法立即返回值為 true。 如果進程尚未終止并且超時值小于或等于零,則此方法立即返回值 false。

此方法的默認實現(xiàn)會輪詢 exitValue 以檢查進程是否已終止。 強烈鼓勵此類的具體實現(xiàn)以更有效的實現(xiàn)覆蓋此方法。

參數(shù):

參數(shù)名稱 參數(shù)描述
timeout 最長等待時間
unit timeout 參數(shù)的時間單位

返回:

如果子進程已退出,則為 true;如果在子進程退出之前經(jīng)過了等待時間,則為 false。

Throws:

Throw名稱 Throw描述
InterruptedException 如果當前線程在等待時被中斷。
NullPointerException 如果單位為空

exitValue

public abstract int exitValue()

返回子進程的退出值。

返回:

此 Process 對象表示的子進程的退出值。 按照慣例,值 0 表示正常終止。

Throws:

Throw名稱 Throw描述
IllegalThreadStateException 如果此 Process 對象表示的子進程尚未終止

destroy

public abstract void destroy()

殺死子進程。 此 Process 對象表示的子進程是否被強制終止取決于實現(xiàn)。

destroyForcibly

public Process destroyForcibly()

殺死子進程。 此 Process 對象所代表的子進程被強制終止。

此方法的默認實現(xiàn)調(diào)用destroy(),因此可能不會強制終止進程。 強烈鼓勵此類的具體實現(xiàn)使用兼容的實現(xiàn)覆蓋此方法。 在 ProcessBuilder#start 和 Runtime#exec 返回的 Process 對象上調(diào)用此方法將強制終止進程。

注意:子進程可能不會立即終止。 即 isAlive() 可能會在 destroyForcibly() 被調(diào)用后的短時間內(nèi)返回 true。 如果需要,此方法可以鏈接到 waitFor()。

返回:

表示要強制銷毀的子進程的 Process 對象。

isAlive

public boolean isAlive()

測試這個 Process 所代表的子進程是否存活。

返回:

如果此 Process 對象表示的子進程尚未終止,則為 true。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號