新聞中心
Process

創(chuàng)新互聯(lián)的客戶來(lái)自各行各業(yè),為了共同目標(biāo),我們?cè)诠ぷ魃厦芮信浜?,從?chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對(duì)我們的要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。專業(yè)領(lǐng)域包括網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、電商網(wǎng)站開(kāi)發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開(kāi)發(fā)。
java.lang.Object
|---java.lang.Process
public abstract class Process
extends ObjectProcessBuilder#start() 和 Runtime#exec(String[],String[],File) 方法創(chuàng)建本機(jī)進(jìn)程并返回 Process 子類的實(shí)例,該實(shí)例可用于控制進(jìn)程并獲取有關(guān)它的信息。 Process 類提供了執(zhí)行來(lái)自進(jìn)程的輸入、執(zhí)行輸出到進(jìn)程、等待進(jìn)程完成、檢查進(jìn)程的退出狀態(tài)以及銷毀(殺死)進(jìn)程的方法。
創(chuàng)建進(jìn)程的方法可能不適用于某些本機(jī)平臺(tái)上的特殊進(jìn)程,例如本機(jī)窗口進(jìn)程、守護(hù)進(jìn)程、Microsoft Windows 上的 Win16/DOS 進(jìn)程或 shell 腳本。
默認(rèn)情況下,創(chuàng)建的子進(jìn)程沒(méi)有自己的終端或控制臺(tái)。它的所有標(biāo)準(zhǔn) I/O(即 stdin、stdout、stderr)操作都將被重定向到父進(jìn)程,在那里可以通過(guò)使用 getOutputStream()、getInputStream() 和 getErrorStream() 方法獲得的流來(lái)訪問(wèn)它們。父進(jìn)程使用這些流向子進(jìn)程提供輸入并從子進(jìn)程獲取輸出。由于部分原生平臺(tái)只為標(biāo)準(zhǔn)輸入輸出流提供有限的緩沖區(qū)大小,未能及時(shí)寫入子進(jìn)程的輸入流或讀取輸出流可能會(huì)導(dǎo)致子進(jìn)程阻塞,甚至死鎖。
如果需要,也可以使用 ProcessBuilder 類的方法重定向子進(jìn)程 I/O。
當(dāng)沒(méi)有更多對(duì) Process 對(duì)象的引用時(shí),子進(jìn)程不會(huì)被終止,而是子進(jìn)程繼續(xù)異步執(zhí)行。
不要求由 Process 對(duì)象表示的進(jìn)程相對(duì)于擁有該 Process 對(duì)象的 Java 進(jìn)程異步或并發(fā)執(zhí)行。
從 1.5 開(kāi)始,ProcessBuilder#start() 是創(chuàng)建流程的首選方式。
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| Process() |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| abstract void | destroy() | 殺死子進(jìn)程。 |
| Process | destroyForcibly() | 殺死子進(jìn)程。 |
| abstract int | exitValue() | 返回子進(jìn)程的退出值。 |
| abstract InputStream | getErrorStream() | 返回連接到子進(jìn)程錯(cuò)誤輸出的輸入流。 |
| abstract InputStream | getInputStream() | 返回連接到子進(jìn)程正常輸出的輸入流。 |
| abstract OutputStream | getOutputStream() | 返回連接到子進(jìn)程正常輸入的輸出流。 |
| boolean | isAlive() | 測(cè)試這個(gè) Process 所代表的子進(jìn)程是否存活。 |
| abstract int | waitFor() | 如有必要,使當(dāng)前線程等待,直到此 Process 對(duì)象表示的進(jìn)程終止。 |
| boolean | waitFor(long timeout, TimeUnit unit) | 如有必要,使當(dāng)前線程等待,直到此 Process 對(duì)象表示的子進(jìn)程終止,或指定的等待時(shí)間過(guò)去。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
構(gòu)造函數(shù)詳細(xì)信息
Process
public Process()
方法詳情
getOutputStream
public abstract OutputStream getOutputStream()
返回連接到子進(jìn)程正常輸入的輸出流。 流的輸出通過(guò)管道傳輸?shù)酱?Process 對(duì)象表示的進(jìn)程的標(biāo)準(zhǔn)輸入中。
如果子流程的標(biāo)準(zhǔn)輸入已使用 ProcessBuilder#redirectInput(Redirect) 重定向,則此方法將返回空輸出流。
實(shí)施說(shuō)明:對(duì)返回的輸出流進(jìn)行緩沖是個(gè)好主意。
返回:
連接到子進(jìn)程正常輸入的輸出流
getInputStream
public abstract InputStream getInputStream()
返回連接到子進(jìn)程正常輸出的輸入流。 流從由該 Process 對(duì)象表示的進(jìn)程的標(biāo)準(zhǔn)輸出中獲取通過(guò)管道傳輸?shù)臄?shù)據(jù)。
如果子流程的標(biāo)準(zhǔn)輸出已使用 ProcessBuilder#redirectOutput(Redirect) 重定向,則此方法將返回空輸入流。
否則,如果子進(jìn)程的標(biāo)準(zhǔn)錯(cuò)誤已經(jīng)使用 ProcessBuilder#redirectErrorStream(boolean) 重定向,則該方法返回的輸入流將接收合并后的標(biāo)準(zhǔn)輸出和子進(jìn)程的標(biāo)準(zhǔn)錯(cuò)誤。
實(shí)現(xiàn)說(shuō)明:對(duì)返回的輸入流進(jìn)行緩沖是個(gè)好主意。
返回:
連接到子進(jìn)程正常輸出的輸入流
getErrorStream
public abstract InputStream getErrorStream()
返回連接到子進(jìn)程錯(cuò)誤輸出的輸入流。 流從這個(gè) Process 對(duì)象表示的進(jìn)程的錯(cuò)誤輸出中獲取數(shù)據(jù)。
如果子進(jìn)程的標(biāo)準(zhǔn)錯(cuò)誤已使用 ProcessBuilder#redirectError(Redirect) 或 ProcessBuilder#redirectErrorStream(boolean) 重定向,則此方法將返回 null 輸入流。
實(shí)現(xiàn)說(shuō)明:對(duì)返回的輸入流進(jìn)行緩沖是個(gè)好主意。
返回:
連接到子進(jìn)程錯(cuò)誤輸出的輸入流
waitFor
public abstract int waitFor() throws InterruptedException
如有必要,使當(dāng)前線程等待,直到此 Process 對(duì)象表示的進(jìn)程終止。 如果子進(jìn)程已經(jīng)終止,則此方法立即返回。 如果子進(jìn)程尚未終止,則調(diào)用線程將被阻塞,直到子進(jìn)程退出。
返回:
此 Process 對(duì)象表示的子進(jìn)程的退出值。 按照慣例,值為 0 表示正常終止。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| InterruptedException | 如果當(dāng)前線程在等待時(shí)被另一個(gè)線程 Thread#interrupt(),則等待結(jié)束并拋出 InterruptedException。 |
waitFor
public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException
如有必要,使當(dāng)前線程等待,直到此 Process 對(duì)象表示的子進(jìn)程終止,或指定的等待時(shí)間過(guò)去。
如果子進(jìn)程已經(jīng)終止,則此方法立即返回值為 true。 如果進(jìn)程尚未終止并且超時(shí)值小于或等于零,則此方法立即返回值 false。
此方法的默認(rèn)實(shí)現(xiàn)會(huì)輪詢 exitValue 以檢查進(jìn)程是否已終止。 強(qiáng)烈鼓勵(lì)此類的具體實(shí)現(xiàn)以更有效的實(shí)現(xiàn)覆蓋此方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| timeout | 最長(zhǎng)等待時(shí)間 |
| unit | timeout 參數(shù)的時(shí)間單位 |
返回:
如果子進(jìn)程已退出,則為 true;如果在子進(jìn)程退出之前經(jīng)過(guò)了等待時(shí)間,則為 false。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| InterruptedException | 如果當(dāng)前線程在等待時(shí)被中斷。 |
| NullPointerException | 如果單位為空 |
exitValue
public abstract int exitValue()
返回子進(jìn)程的退出值。
返回:
此 Process 對(duì)象表示的子進(jìn)程的退出值。 按照慣例,值 0 表示正常終止。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalThreadStateException | 如果此 Process 對(duì)象表示的子進(jìn)程尚未終止 |
destroy
public abstract void destroy()
殺死子進(jìn)程。 此 Process 對(duì)象表示的子進(jìn)程是否被強(qiáng)制終止取決于實(shí)現(xiàn)。
destroyForcibly
public Process destroyForcibly()
殺死子進(jìn)程。 此 Process 對(duì)象所代表的子進(jìn)程被強(qiáng)制終止。
此方法的默認(rèn)實(shí)現(xiàn)調(diào)用destroy(),因此可能不會(huì)強(qiáng)制終止進(jìn)程。 強(qiáng)烈鼓勵(lì)此類的具體實(shí)現(xiàn)使用兼容的實(shí)現(xiàn)覆蓋此方法。 在 ProcessBuilder#start 和 Runtime#exec 返回的 Process 對(duì)象上調(diào)用此方法將強(qiáng)制終止進(jìn)程。
注意:子進(jìn)程可能不會(huì)立即終止。 即 isAlive() 可能會(huì)在 destroyForcibly() 被調(diào)用后的短時(shí)間內(nèi)返回 true。 如果需要,此方法可以鏈接到 waitFor()。
返回:
表示要強(qiáng)制銷毀的子進(jìn)程的 Process 對(duì)象。
isAlive
public boolean isAlive()
測(cè)試這個(gè) Process 所代表的子進(jìn)程是否存活。
返回:
如果此 Process 對(duì)象表示的子進(jìn)程尚未終止,則為 true。
網(wǎng)頁(yè)標(biāo)題:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSProcess
文章分享:http://m.5511xx.com/article/cojhsce.html


咨詢
建站咨詢
