0
我有以下問題。我想使用Java進程構建器來啓動外部應用程序(基於Qt的win32可執行文件,如果它有任何重要性的話)。啓動外部應用程序很有效。應用程序按預期啓動。這部分工作正常。除了啓動外部應用程序之外,我還希望跟蹤實例,以便能夠「銷燬」退出Java應用程序時仍在運行的任何實例。
當我開始我的應用程序執行以下操作:
ExternalTaskTracking externalProcessList = new ExternalTaskTracking();
...
ProcessBuilder pb = new ProcessBuilder(arguments);
Process newProcess=pb.start();
externalProcessList.addProcess(newProcess);
...
ExternalTaskTracking
是簡單的Java類我使用(這是我打算使用)來跟蹤過程。
public class ExternalTaskTracking {
protected ArrayList<Process> processList;
protected Integer processCount;
public ExternalTaskTracking(){
super();
processCount=0;
}
public void addProcess(Process uProcess){
processCount++;
processList.add(uProcess);
//processList.set(processCount, uProcess);
}//end addProcess(Integer uProcess)
public Boolean killProcess(Process uProcess){
Integer index=processList.indexOf(uProcess);
if (index==-1){
return false;
}//end if
try{
uProcess.destroy();
processList.remove(index);
processCount--;
return true;
}catch (Exception ex){
logger.error(ex.toString());
return false;
}//end try-catch
}//end killProcess(Process uProcess)
public void killAll(){
for (Integer i=0;i<processCount;i++){
try{
Process p=processList.get(i);
if (p!=null){
p.destroy();
}else{
logger.error("killAll()->Null process?!?");
}//end if
}catch (Exception ex){
logger.error(ex.toString());
}//end try-cath
}//end for
}//end killAll()
}//end class
問題是,pb.start()
rezult是總是null
,而外部應用程序成功啓動,所以我不能維持進程列表。任何想法我做錯了什麼?
是的,這是問題。我深信'pb.start()'返回'null'是我沒有檢查到明顯的錯誤。 –
您認爲我的回答是正確的,請標記爲正確。 – 4J41
我將其標記爲正確。然而,由於我的聲望<15(作爲「全新」用戶),我無法投票回答, –