好的,所以我发现了问题。首先,感谢所有尝试提供帮助的人。希望你能从我的错误中学到东西。事件链是:
1-我没有耗尽接收缓冲区(源通道读入的缓冲区),最终缓冲区已满。
2-现在已满,pipeSourceChannel.read(readBuffer)返回0字节。有要读取的数据,但无法在完整的缓冲区上读取。
3-这导致通道被关闭(我自己在bytesRead == 0上这样做)和BrokenPipe。
当我无故向水槽写信时,NIO Pipe会抛出“ Broken Pipe”!如何调试?
好的,所以我发现了问题。首先,感谢所有尝试提供帮助的人。希望你能从我的错误中学到东西。事件链是:
1-我没有耗尽接收缓冲区(源通道读入的缓冲区),最终缓冲区已满。
2-现在已满,pipeSourceChannel.read(readBuffer)返回0字节。有要读取的数据,但无法在完整的缓冲区上读取。
3-这导致通道被关闭(我自己在bytesRead == 0上这样做)和BrokenPipe。