我有一些代码,其中调用proc = Runtime.getRuntime().exec(cmd)
来启动子进程,然后在父进程和子进程之间进行一些通信。在某些情况下,我在从父级到子级的write()和flush()调用期间得到java.io.IOException: The pipe is being closed
。有时会发生这种情况但不是每次都发生。
我的假设是子进程正在启动(因此proc.getInput/OutputStream()
有效),但父进程在子进程完全运行/执行之前尝试写入子进程。这看起来似乎有道理吗?我没有足够的JVM经验来真正自信。目前我的解决方案是让子进程写入父进程,通知它已启动并运行;这种方法非常好,但对此感觉更有信心会很好。
如果需要更多代码详情或其他任何内容,我很乐意提供。
谢谢!