【问题标题】:Java Class error : java.io.IOException: The pipe is being closedJava 类错误:java.io.IOException:管道正在关闭
【发布时间】:2011-02-17 07:48:15
【问题描述】:

我们间歇性地收到“java.io.IOException:管道正在关闭”,代码如下。本质上是非常间歇性的。有什么建议吗?我试图复制这个,当我断开我的机器与网络的连接时,我就能得到这个错误。此类在 Siebel CRM 会话打开后读取和写入信息。

这里是 Java 类代码。

   private Process _process;
   private OutputStream _processOut;
   private ByteArrayOutputStream _sessionOutput;
....
   _processOut = _process.getOutputStream();
   _sessionOutput = new ByteArrayOutputStream();
....
 public void writeCommand(String command)
   throws IOException
   {
      _processOut.write(command.getBytes());
      _processOut.flush();
      _sessionOutput.write(command.getBytes());

   }

这里有实际错误:

java.io.IOException: The pipe is being closed
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:260)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
    at mySession.writeCommand(mySession.java:169)

【问题讨论】:

    标签: java pipe


    【解决方案1】:

    发生的情况是您尝试写入的外部进程已关闭连接到其标准输入流的管道。它可能刚刚退出。

    尝试阅读并打印进程的标准输出和标准错误,看看它们是否解释了发生了什么。

    【讨论】:

      【解决方案2】:

      当您关闭了流,甚至在此之后您尝试将数据写入流...

      我猜一个流是在 2 个线程中处理的,其中一个线程可能已经关闭了流(可能是通过编程方式或由于流关闭 finally 块中的某些异常)。并且没有通知另一个线程并尝试在该流上写入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-23
        • 1970-01-01
        相关资源
        最近更新 更多