![](/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.