Process的Waitfor() 引發代碼死鎖

Java用process調用c#的exe後,process.waitfor(). exe執行會停在某處。聽說是waitfor引發的exe子線程死鎖。c#

先存一個連接 http://yearsaaaa123789.iteye.com/blog/1404865線程

關鍵引用code

由於本地的系統對標準輸入和輸出所提供的緩衝池有效,因此錯誤的對標準輸出快速的寫入何從標準輸入快速的讀入都有可能形成子進程的所,甚至死鎖。好了,問題的關鍵在緩衝區這個地方:可執行程序的標準輸出比較多,而運行窗口的標準緩衝區不夠大,因此發生阻塞。接着來分析緩衝區,哪來的這個東西,當Runtime對象調用exec(cmd)後,JVM會啓動一個子進程,該進程會與JVM進程創建三個管道鏈接:標準輸入,標準輸出和標準錯誤流。假設該程序不斷在向標準輸出流和標準錯誤流寫數據,而JVM不讀取的話,當緩衝區滿以後將沒法繼續寫入數據,最終形成阻塞在waitfor()這裏。 
相關文章
相關標籤/搜索