2012-11-28 101 views
3

通過使用Apache Commons-Exec,我可以成功啓動程序,但啓動程序在程序啓動後暫停。如何啓動程序並使用apache commons-exec立即退出?

請問如何啓動一個程序並立即退出,這樣就不會阻塞下面的執行過程?

DefaultExecutor executor = new DefaultExecutor(); 
executor.execute("cmd /c start C:\\Users\\xx\\program.exe"); 

我在Win7 64bit上。

感謝

回答

3

根據documentationexecute(CommandLine)開始同步執行。也就是說,它阻止了調用線程。您可能需要異步執行,因此請使用execute(CommandLine command, ExecuteResultHandler handler)。例如,

DefaultExecutor executor = new DefaultExecutor(); 
executor.execute(new CommadLine("cmd /c start C:\\Users\\xx\\program.exe"), 
       new DefaultExecuteResultHandler()); 
2

聽起來像是你需要使用DefaultExecuteResultHandler

查看tutorial(下方)瞭解更多信息。

+1

好吧,我修改了從Apache的教程設置看門狗說3秒。該程序將執行另一個Java應用程序,該應用程序是一個在10秒後停止運行的線程。問題是,直到子進程在10秒內關閉,父進程纔會關閉。看門狗不工作。父程序是異步的。任何進一步的幫助,。?謝謝。 – simaremare

+0

當我嘗試運行'* .sh'文件時(第一行是'#!/ bin/sh'),我在Linux上看到了相同的行爲。看門狗在超時後不會停止這個過程! :( – djxak