2015-02-10 115 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