2015-02-10 111 views
0

我知道如果進程的錯誤和輸入流沒有被完全讀取,進程將被阻塞。當他的流(錯誤和輸入流)終止時,java進程是否終止?

  • 這是否意味着當它的流被完全讀取(流中沒有數據,流的末尾已經到達)時,流程完成(所有的命令都被執行)?
  • 流有可能終止,但過程不是嗎?
  • 我如何確定過程完成?

    我在文檔中找不到關於此的信息。

另一個問題: 如下面所提到的,可能的是,所述流被終止,但該過程不是。在這種情況下:這些類型的進程是否可以包含任何要執行的命令或操作,或者它們只是沒有任何操作或任何操作的進程?第二個問題:儘管使用了Process.waitFor(),但是如何在某個超時後終止進程?

回答

1

使用Process.waitFor()方法要等到過程結束

+0

謝謝,但你能告訴我,如果他的流被終止(沒有更多的數據來自流)流程仍然存在? – user1855808 2015-02-10 18:14:16

+0

不,程序仍可以在這種情況下 – bedrin 2015-02-10 18:53:19

0

這是否意味着此過程結束後(他所有的命令被執行),當其流已被完全讀取(在流中沒有數據,結束流已經到達)?

不,不。相反:

是否有可能流被終止,但過程不是?

是的,這是完全可能的。

我該如何確定過程完成?我在文檔中找不到關於此的信息。

使用Process.waitFor()

+0

謝謝。所以我有另外兩個問題。正如你所說,流有可能終止,但流程不是。在這種情況下:該過程是否可以包含任何要執行的命令或操作,還是僅僅是一個沒有任何操作或任何操作的過程?第二個問題:即使他沒有完成關於第一個問題的 – user1855808 2015-02-10 19:10:50

+0

@ user1855808,我該如何在某個超時後終止進程,是的,進程可以執行任何操作,而不是執行對其標準輸出流的輸出。關於第二個問題,我認爲你應該搜索StackOverflow來尋找答案,或者如果你找不到任何問題就會提出另一個問題。 – davmac 2015-02-10 21:23:06