gpt4 book ai didi

java - 从 getInputStream 正确关闭 Java Process InputStream

转载 作者:IT老高 更新时间:2023-10-28 21:16:12 29 4
gpt4 key购买 nike

我无法在文档中找到对此的说明。但是当我们有一个 Process 对象并调用 getInputStream() 时,

我们是否得到了一个新的流,我们应该在完成后明确关闭它?或者我们是否得到了已经存在的、与 Process 相关联的流,我们不应该关闭它,但 Process 会负责关闭它?

基本上,我们应该如何与从 Process.getInputStream() 获得的流进行交互?关还是不关?

最佳答案

通过阅读 UNIXProcess.java,会发生以下情况:

我们需要区分两种状态:要么进程还活着,要么已经死了。

如果进程处于 Activity 状态,通过关闭 OutputStream(转到进程的标准输入),您就是在告诉进程没有更多的输入。通过关闭InputStreams(进程的stdout,stderr),进程不再向这些写入(如果尝试它会得到SIGPIPE)。

当进程死亡时,Java 将缓冲来自 stdout/stderr 的剩余数据,并为您关闭所有三个流(它正在运行“进程收割机”线程,该线程会在进程死亡时得到通知)。任何写入 OutputStream 的尝试都将失败。从 InputStream 读取将返回缓冲数据(如果有)。关闭其中任何一个都没有好处,但也不会造成任何伤害。 (此时底层文件描述符已关闭)。

关于java - 从 getInputStream 正确关闭 Java Process InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097697/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com