簡體   English   中英

java nio和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/012分別。 這不適用於所有流類型,也不適用於非Unix系統,但它可能是一種選擇。

流關閉后,無法重新打開它,除非它是文件並且您能夠獲取文件名。

不,這是不可能的。 stdout,stderr和stdin都是“特殊”流。 你無法關閉它們並在以后重新打開它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM