![](/img/trans.png)
[英]java NIO, selectedKeys, and channels for STDIN, STDOUT, STDERR
[英]java nio and end of stream for stdin, stdout, stderr
我有一个程序A通过Pipe.SourceChannel接收ByteBuffer中另一个程序B的标准输出。
该程序将从ByteBuffer读取stdout,直到它到达流的末尾(即,直到ByteBuffer的read()返回-1)。
程序B的stdout可以在程序执行中多次打开和关闭吗? 也就是说,read()是否可能返回-1,但后来程序B有额外的stdout,在这种情况下,程序A应该执行另一个ByteBuffer的read()?
提前致谢。
在Linux下,您可以将NIO用于stdin,stdout和stderr,因为它们与某些字符设备相关联,可以作为文件进行访问。 要做到这一点,你可以打开/proc/self/fd/0
, 1
或2
分别。 这不适用于所有流类型,也不适用于非Unix系统,但它可能是一种选择。
流关闭后,无法重新打开它,除非它是文件并且您能够获取文件名。
不,这是不可能的。 stdout,stderr和stdin都是“特殊”流。 你无法关闭它们并在以后重新打开它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.