簡體   English   中英

為什么Process.waitFor()永遠不會返回?

[英]Why does Process.waitFor() never return?

我用以下方式從Java代碼啟動一個Windows進程(用C ++編寫但我沒有源代碼):

 Process p1 = Runtime.getRuntime().exec(cmdAndParams);
 p1.waitFor();

我的問題是waitFor()方法永遠不會結束。 因此,我嘗試在一個簡單的shell中啟動該過程,它正確地結束了shell中的許多打印(我想是標准輸出)。

因此,我決定創建並啟動讀取標准輸出的線程,即使我現在不需要這些輸出。 這解決了這個問題。

所以我的問題是以下問題:這個解決方案是“啟動和等待具有輸出的外部進程的Java標准”,還是意味着本機進程中存在某個問題? 如果存在這樣的問題,那么C ++編程“錯誤”可能是問題的根源?

這是OS的事情。 子進程正在寫入stdout,並且正在緩沖,等待Java進程讀取它。 當你不讀它時,緩沖區最終填滿,子進程阻止寫入stdout等待緩沖區空間。

您必須處理子進程'stdout(和stderr),無論您使用哪種語言。

我建議你閱讀這篇文章 (全部4頁)並在那里實施建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM