新聞中心
Process

創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標(biāo),我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括網(wǎng)站制作、網(wǎng)站設(shè)計、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。
java.lang.Object
|---java.lang.Process
public abstract class Process
extends ObjectProcessBuilder#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)建的子進程沒有自己的終端或控制臺。它的所有標(biāo)準(zhǔn) I/O(即 stdin、stdout、stderr)操作都將被重定向到父進程,在那里可以通過使用 getOutputStream()、getInputStream() 和 getErrorStream() 方法獲得的流來訪問它們。父進程使用這些流向子進程提供輸入并從子進程獲取輸出。由于部分原生平臺只為標(biāo)準(zhǔn)輸入輸出流提供有限的緩沖區(qū)大小,未能及時寫入子進程的輸入流或讀取輸出流可能會導(dǎo)致子進程阻塞,甚至死鎖。
如果需要,也可以使用 ProcessBuilder 類的方法重定向子進程 I/O。
當(dāng)沒有更多對 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() | 如有必要,使當(dāng)前線程等待,直到此 Process 對象表示的進程終止。 |
| boolean | waitFor(long timeout, TimeUnit unit) | 如有必要,使當(dāng)前線程等待,直到此 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 對象表示的進程的標(biāo)準(zhǔn)輸入中。
如果子流程的標(biāo)準(zhǔn)輸入已使用 ProcessBuilder#redirectInput(Redirect) 重定向,則此方法將返回空輸出流。
實施說明:對返回的輸出流進行緩沖是個好主意。
返回:
連接到子進程正常輸入的輸出流
getInputStream
public abstract InputStream getInputStream()
返回連接到子進程正常輸出的輸入流。 流從由該 Process 對象表示的進程的標(biāo)準(zhǔn)輸出中獲取通過管道傳輸?shù)臄?shù)據(jù)。
如果子流程的標(biāo)準(zhǔn)輸出已使用 ProcessBuilder#redirectOutput(Redirect) 重定向,則此方法將返回空輸入流。
否則,如果子進程的標(biāo)準(zhǔn)錯誤已經(jīng)使用 ProcessBuilder#redirectErrorStream(boolean) 重定向,則該方法返回的輸入流將接收合并后的標(biāo)準(zhǔn)輸出和子進程的標(biāo)準(zhǔn)錯誤。
實現(xiàn)說明:對返回的輸入流進行緩沖是個好主意。
返回:
連接到子進程正常輸出的輸入流
getErrorStream
public abstract InputStream getErrorStream()
返回連接到子進程錯誤輸出的輸入流。 流從這個 Process 對象表示的進程的錯誤輸出中獲取數(shù)據(jù)。
如果子進程的標(biāo)準(zhǔn)錯誤已使用 ProcessBuilder#redirectError(Redirect) 或 ProcessBuilder#redirectErrorStream(boolean) 重定向,則此方法將返回 null 輸入流。
實現(xiàn)說明:對返回的輸入流進行緩沖是個好主意。
返回:
連接到子進程錯誤輸出的輸入流
waitFor
public abstract int waitFor() throws InterruptedException
如有必要,使當(dāng)前線程等待,直到此 Process 對象表示的進程終止。 如果子進程已經(jīng)終止,則此方法立即返回。 如果子進程尚未終止,則調(diào)用線程將被阻塞,直到子進程退出。
返回:
此 Process 對象表示的子進程的退出值。 按照慣例,值為 0 表示正常終止。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| InterruptedException | 如果當(dāng)前線程在等待時被另一個線程 Thread#interrupt(),則等待結(jié)束并拋出 InterruptedException。 |
waitFor
public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException
如有必要,使當(dāng)前線程等待,直到此 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 | 如果當(dāng)前線程在等待時被中斷。 |
| 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。
網(wǎng)站欄目:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSProcess
鏈接URL:http://m.fisionsoft.com.cn/article/cojhsce.html


咨詢
建站咨詢
