所以根据我的理解,PrintStream 必须使用某种 Java 本机接口与操作系统进行通信,以便它可以写入标准输出,或者 java 是否使用其他技术?我想知道 JVM 的架构让我很感兴趣。了解它的工作方式和系统本身的架构对我来说非常有趣。
问问题
213 次
2 回答
1
OpenJDK 中的标准输出流是一个PrintStream
which wraps BufferedOutputStream
, which wraps FileOutputStream
which是从FileDescriptor
. 有一些特殊FileDescriptor
对象对应于标准输入、标准输出和标准错误(特别是,请参阅 参考资料FileDescriptor.out
)。它们有众所周知的数字(例如,stdout 文件描述符是1
)。所以真正的逻辑在FileOutputStream.writeBytes
当然是本机的方法内部。在 Java 方面,我们有缓冲、同步和将字符转换为字节的功能。低级的东西(将字节直接写入文件描述符)由本机代码完成。
于 2015-11-23T04:35:14.323 回答
0
JavaSystem.out
PrintStream
写入stdout。维基百科将标准输出描述为,
标准输出的文件描述符是 1(一);POSIX
<unistd.h>
定义是STDOUT_FILENO
;对应的<stdio.h>
变量是FILE* stdout
;同样,<iostream>
变量为std::cout
。
虽然 Javadoc forSystem.out
说(部分)
“标准”输出流。此流已经打开并准备好接受输出数据。
于 2015-11-22T23:49:52.997 回答