我有一个程序通过 Pipe.SourceChannel 将标准输出、标准错误和标准输入管道传输到/从 BytesBuffers。
该程序使用选择器注册每个通道。
循环中的程序会周期性地遍历一组 selectedKeys 中的每个键,这些键对应于 stdout、stderr 和 stdin。对于每一个key,它会判断key是否有效,是否可读或可写,如果是,则对一个ByteBuffer进行相应的IO操作
我的问题是,当程序开始时,我可以假设一组最初选择的键(对应于 stdin 、 stdout 、 stderr )。
标准输入的密钥是否总是第一个准备好、有效和可读的密钥?标准输出的密钥能否在标准输入之前准备好、有效且可读?
我问是因为我的程序行为具有随机 IO 行为,并且我猜测我对初始密钥集成员身份的假设是错误的。
提前致谢。