【问题标题】:Is the java process terminated when his streams (Error and Input Stream) are terminated?当他的流(错误和输入流)终止时,java进程是否终止?
【发布时间】:2015-02-10 17:56:56
【问题描述】:

我知道如果它的错误和输入流没有被完全读取,该进程将被阻塞。

  • 这是否意味着当它的流已被完全读取(流中没有数据,已到达流的末尾)时,该进程已完成(他的所有命令都已执行)?

  • 是否有可能流已终止但进程未终止?

  • 我如何确定该过程已完成?

    我在文档中找不到这方面的信息。

另一个问题: 如下所述,流可能会终止,但进程不会。在这种情况下:这些类型的进程是否包含任何要执行的命令或动作,或者它们只是没有动作或任何事情的进程?第二个问题:尽管使用了 Process.waitFor(),但我如何在某个超时后终止进程?

【问题讨论】:

    标签: java process inputstream runtime.exec terminate


    【解决方案1】:

    使用Process.waitFor()方法等待进程完成

    【讨论】:

    • 谢谢,但是如果他的流被终止(不再有数据来自流),你能告诉我进程是否还活着吗?
    • 不,这种情况下进程可以继续
    【解决方案2】:

    这是否意味着当其流已被完全读取(流中没有数据,已到达流的末尾)时,该进程已完成(他的所有命令都已执行)?

    不,它没有。反之:

    是否有可能流已终止但进程未终止?

    是的,这是完全可能的。

    如何确定该过程已完成?我在文档中找不到这方面的信息。

    使用Process.waitFor()

    【讨论】:

    • 谢谢。所以我还有两个问题。正如您所说,流可能会终止,但进程不会。在这种情况下:这个过程是否包含任何要执行的命令或动作,或者它只是一个没有动作或任何事情的过程?第二个问题:即使他没有完成,我如何在某个超时后终止进程
    • @user1855808 关于第一个问题,是的,该进程可以执行任何操作,而不是对其标准输出流执行输出。关于第二个,我认为您应该搜索 StackOverflow 以寻找答案,或者如果找不到任何问题,请提出另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2021-09-05
    • 2012-11-06
    相关资源
    最近更新 更多