簡體   English   中英

為什么5分鍾后Java中的processBuilder掛起?

[英]Why processBuilder in java hangs after 5 mins?

我的命令行處理超過5分鍾。 當我使用ProcessBuilder調用命令行時,它可以在5分鍾內完成命令。

而如果花費超過5分鍾,則該過程將掛起,並且在我退出該過程之前,對過程沒有任何改善。

p = new ProcessBuilder("myprogram","with","parameter").start();
p.waitFor();

如果您不懂上述問題,請告訴我?

問題可能是,命令“ myprogram”產生了一些輸出,而您沒有在讀取它。 這意味着一旦緩沖區已滿,進程將被阻塞,並等待您的進程繼續讀取。 您的進程依次等待另一個進程完成(之所以不會,因為它等待您的進程,...)。 這是一個典型的僵局情況。

您需要不斷從流程輸入流中讀取內容,以確保它不會被阻塞。

Javadocs說:

上課過程

由於某些本機平台僅為標准輸入和輸出流提供了有限的緩沖區大小,因此無法及時寫入子流程的輸入流或讀取子流程的輸出流可能導致子流程阻塞,甚至死鎖。

無法從Process中清除輸入流(通過管道傳輸到子流程的輸出流)的緩沖區可能導致子流程阻塞。

暫無
暫無

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

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