2012-10-20 35 views
2

我正在使用Runtime.getRunTime()方法在Java中爲web服務調用exe文件。如果我在不使用Process.wait()的情況下調用它,那麼它可以正常工作,但如果我將這與wait()方法一起使用,那麼我的進程將掛起,我必須重新啓動Tomcat。當使用等待方法時,使用Runtime.getrunTime調用exe文件

任何人都可以說明爲什麼會發生這種情況嗎?

+1

一個代碼片段顯示你有什麼,什麼是工作,什麼不工作,將有所幫助。 –

回答

0

This shows you WHY程序「等待()」外部進程完成執行。

現在,外部程序有可能正在請求stdout和stderr,而您的程序正在阻止該程序。這導致了永久的等待或所謂的僵局。 See this for more details

+0

如果我使用waitFor()然後進程等待無限期的時間,我不得不重新啓動tomcat服務器。我的代碼片段是這樣的:Process p = Runtime.getRuntime()。exec(「 - 我從cmd行採取的exe路徑參數「)p.waitFor() – matti

+0

@matti這可能是因爲你的程序正在陷入僵局。一個正在等待另一個進程退出,而另一個進程正在等待獲得「stdout」/「stderr」訪問權限。 –

相關問題