2 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
您正在啟動(dòng)進(jìn)程,但沒有讀取它們的輸出或返回狀態(tài)(甚至在等待它們完成),因此您的代碼實(shí)際上不會(huì)以任何方式對(duì)您啟動(dòng)的進(jìn)程做出反應(yīng)。
您可能習(xí)慣于system
在 PHP 或類似系統(tǒng)中,該調(diào)用僅在執(zhí)行的命令完成后才返回。Runtime.exec()
不同之處在于您開始該過程,但由您來讀取它從Process
返回的輸出中的輸出。
所以p
實(shí)際上并不代表崇高,但它是正在執(zhí)行的過程pidof
,您必須閱讀其輸出才能獲得所需的信息。

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
當(dāng)然有一個(gè)過程;'pidof someRandomGarbage' 仍然是一個(gè)運(yùn)行的應(yīng)用程序。應(yīng)用程序在運(yùn)行時(shí)返回“nope”這一事實(shí)并不會(huì)神奇地使進(jìn)程消失。您必須使用Process
類的方法來確定運(yùn)行的結(jié)果pidof someRandomGarbage
。p.exitValue()
可能就是你要找的。要確定您必須使用的實(shí)際輸出p.getInputStream()
。
請(qǐng)注意,使用相對(duì)路徑是一個(gè)非常糟糕的主意;這意味著您依賴于 PATH 變量和java 正確解析它。嘗試/usr/bin/pkill
,或可配置的東西。
添加回答
舉報(bào)