1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
Process#waitFor()返回int值,它實(shí)際上errorlevel是進(jìn)程的退出代碼(即)。
如果啟動(dòng)的進(jìn)程返回非零errorlevel并且“正確”(即按預(yù)期)工作,否則您的代碼會(huì)失敗。您可以通過運(yùn)行下面的批處理文件來檢查它:
@echo off
calc.exe
REM explorer.exe
echo Error level: %errorlevel%
它會(huì)回報(bào)你的環(huán)境非零errorlevel輸出的calc.exe和Explorer.exe的,并0為NOTEPAD.EXE。
在我的環(huán)境(Windows 7)上,calc.exe也會(huì)返回0并且您的代碼片段按預(yù)期工作。
還請(qǐng)考慮到某些程序在成功的情況下可能會(huì)返回非零退出代碼 - 這不是嚴(yán)格的。
基于這一點(diǎn)以及第一個(gè)練習(xí)不應(yīng)該太復(fù)雜的事實(shí) - 假設(shè)您的代碼片段就是答案。
如果無(wú)論如何您仍然需要找到解決方案,您可以這樣做(這里是批處理命令,而不是Java):
運(yùn)行calc.exe:
calc.exe
查找PID的的的calc.exe進(jìn)程:
tasklist /v /fo csv | findstr /i "calc.exe"
通過運(yùn)行該過程的無(wú)限檢查PID與
break;
當(dāng)處理不再被呈現(xiàn),使用命令(假設(shè)例如PID = 1111
):tasklist /fi "pid eq 1111"
添加回答
舉報(bào)